01-Java基礎(chǔ)-類與對(duì)象&數(shù)據(jù)類型&運(yùn)算符

數(shù)據(jù)類型蕊连、常量渡讼、對(duì)象和類、Java 修飾符苛谷、位運(yùn)算符

命名規(guī)則

包:com.trvqd(域名倒過來辅鲸,所有字母小寫)
類或接口:HelloWorld(駝峰,首字母大寫)
方法和變量:helloWorld(駝峰腹殿,首字母小寫)
常量:NAME 独悴、 GET_PLAYER(大寫,多個(gè)單詞下劃線分隔)

數(shù)據(jù)類型
  • 基本數(shù)據(jù)類型
    Java語言基本類型分為數(shù)值型(整數(shù)類型:byte锣尉,short刻炒,int,long; 浮點(diǎn)類型:float自沧,double)坟奥,字符型(char),布爾型(boolean)拇厢。

byte:

  • byte 數(shù)據(jù)類型是8位(bit)爱谁、1字節(jié)、有符號(hào)的孝偎,以二進(jìn)制補(bǔ)碼表示的整數(shù)访敌;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1)衣盾;
  • 默認(rèn)值是 0寺旺;
  • byte 類型用在大型數(shù)組中節(jié)約空間,主要代替整數(shù)势决;
  • 例子:byte a = 100阻塑,byte b = -50。

short:

  • short 數(shù)據(jù)類型是 16 位(bit)果复、2字節(jié)陈莽、有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù)
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • 默認(rèn)值是 0传透;
  • Short 數(shù)據(jù)類型也可以像 byte 那樣節(jié)省空間耘沼;
  • 例子:short s = 1000极颓,short r = -20000朱盐。

int:

  • int 數(shù)據(jù)類型是32位(bit)、4字節(jié)菠隆、有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù)兵琳;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1)骇径;
  • 默認(rèn)值是 0 躯肌;
  • 一般地整型變量默認(rèn)為 int 類型;
  • 例子:int a = 100000, int b = -200000破衔。

long:

  • long 數(shù)據(jù)類型是 64 位(bit)清女、8字節(jié)、有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù)晰筛;
  • 最小值是 -9,223,372,036,854,775,808(-2^63)嫡丙;
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 默認(rèn)值是 0L读第;
  • 這種類型主要使用在需要比較大整數(shù)的系統(tǒng)上曙博;
  • 例子: long a = 100000L,Long b = -200000L怜瞒。

float:

  • float 數(shù)據(jù)類型是單精度父泳、32位、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)吴汪;
  • float 在儲(chǔ)存大型浮點(diǎn)數(shù)組的時(shí)候可節(jié)省內(nèi)存空間惠窄;
  • 默認(rèn)值是 0.0f;
  • 浮點(diǎn)數(shù)不能用來表示精確的值漾橙,如貨幣杆融;
  • 例子:float f1 = 234.5f。

double:

  • double 數(shù)據(jù)類型是雙精度近刘、64 位擒贸、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù);
  • 浮點(diǎn)數(shù)的默認(rèn)類型為double類型觉渴;
  • double類型同樣不能表示精確的值介劫,如貨幣;
  • 默認(rèn)值是 0.0d案淋;
  • 例子:double d1 = 123.4座韵。

boolean:

  • boolean數(shù)據(jù)類型表示一位的信息;
  • 只有兩個(gè)取值:true 和 false;
  • 這種類型只作為一種標(biāo)志來記錄 true/false 情況誉碴;
  • 默認(rèn)值是 false宦棺;
  • 例子:boolean one = true。

char:

  • char類型是一個(gè)單一的 16 位 Unicode 字符黔帕;
  • 最小值是 \u0000(即為0)代咸;
  • 最大值是 \uffff(即為65,535);
  • char 數(shù)據(jù)類型可以儲(chǔ)存任何字符成黄;
  • 例子:char letter = 'A';呐芥。

整型、實(shí)型(常量)奋岁、字符型數(shù)據(jù)可以混合運(yùn)算思瘟。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型闻伶,然后進(jìn)行運(yùn)算滨攻。

轉(zhuǎn)換從低級(jí)到高級(jí)。
低 --------------------------------------------> 高
byte,short,char—> int —> long—> float —> double

  • 引用數(shù)據(jù)類型
    類(class)蓝翰,接口(interface)光绕,數(shù)組([])
常量

常量在程序運(yùn)行時(shí)是不能被修改的。
在 Java 中使用 final 關(guān)鍵字來修飾常量霎箍。

final double PI = 3.1415927;
對(duì)象和類

一個(gè)類中可以包含以下類型變量:
局部變量:在方法奇钞、構(gòu)造方法或者語句塊中定義的變量被稱為局部變量。變量聲明和初始化都是在方法中漂坏,方法結(jié)束后景埃,變量就會(huì)自動(dòng)銷毀。
成員變量(實(shí)例變量):成員變量是定義在類中顶别,獨(dú)立于方法之外的變量谷徙,沒有 static 修飾。這種變量在創(chuàng)建對(duì)象的時(shí)候?qū)嵗币铩3蓡T變量可以被類中方法完慧、構(gòu)造方法和特定類的語句塊訪問。
類變量(靜態(tài)變量):獨(dú)立于方法之外的變量剩失,用 static 修飾屈尼。

public class Variable{
    static int allClicks=0;    // 類變量
 
    String str="hello world";  // 實(shí)例變量
 
    public void method(){
 
        int i =0;  // 局部變量
 
    }
}

成員變量和類變量的區(qū)別:

1、兩個(gè)變量的生命周期不同
成員變量隨著對(duì)象的創(chuàng)建而存在拴孤,隨著對(duì)象的回收而釋放脾歧。
靜態(tài)變量隨著類的加載而存在,隨著類的消失而消失演熟。
2鞭执、調(diào)用方式不同
成員變量只能被對(duì)象調(diào)用司顿。
靜態(tài)變量可以被對(duì)象調(diào)用,還可以被類名調(diào)用兄纺。
3大溜、數(shù)據(jù)存儲(chǔ)位置不同
成員變量存在于堆內(nèi)存中。
靜態(tài)變量存在于方法區(qū)中估脆。

  • 構(gòu)造方法
    每個(gè)類都有構(gòu)造方法钦奋。如果沒有顯式地為類定義構(gòu)造方法,Java編譯器將會(huì)為該類提供一個(gè)默認(rèn)構(gòu)造方法旁蔼。
    在創(chuàng)建一個(gè)對(duì)象的時(shí)候锨苏,至少要調(diào)用一個(gè)構(gòu)造方法疙教。構(gòu)造方法的名稱必須與類同名棺聊,一個(gè)類可以有多個(gè)構(gòu)造方法。
public class Puppy{
    public Puppy(){
    }
 
    public Puppy(String name){
        // 這個(gè)構(gòu)造器僅有一個(gè)參數(shù):name
    }
}

注:1贞谓、如果一個(gè)類中沒有定義構(gòu)造方法限佩,系統(tǒng)會(huì)默認(rèn)提供一個(gè)空參的構(gòu)造方法;
2裸弦、如果一個(gè)類中定義了有參的構(gòu)造方法祟同,系統(tǒng)不會(huì)再提供空參的構(gòu)造方法,需要手動(dòng)定義理疙;

  • 創(chuàng)建對(duì)象
    對(duì)象是根據(jù)類創(chuàng)建的晕城。在Java中,使用關(guān)鍵字new來創(chuàng)建一個(gè)新的對(duì)象窖贤。創(chuàng)建對(duì)象需要以下三步:
    聲明:聲明一個(gè)對(duì)象砖顷,包括對(duì)象名稱和對(duì)象類型。
    實(shí)例化:使用關(guān)鍵字new來創(chuàng)建一個(gè)對(duì)象赃梧。
    初始化:使用new創(chuàng)建對(duì)象時(shí)滤蝠,會(huì)調(diào)用構(gòu)造方法初始化對(duì)象。
public class Puppy{
   public Puppy(String name){
      //這個(gè)構(gòu)造器僅有一個(gè)參數(shù):name
      System.out.println("小狗的名字是 : " + name ); 
   }
   public static void main(String []args){
      // 下面的語句將創(chuàng)建一個(gè)Puppy對(duì)象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}
Java 修飾符

修飾符用來定義類授嘀、方法或者變量物咳,通常放在語句的最前端。

  • 訪問控制修飾符
    Java中蹄皱,可以使用訪問控制符來保護(hù)對(duì)類览闰、變量、方法和構(gòu)造方法的訪問巷折。
    default (即缺省压鉴,什么也不寫): 在同一包內(nèi)可見,不使用任何修飾符盔几。使用對(duì)象:類晴弃、接口、變量、方法上鞠。
    private : 在同一類內(nèi)可見际邻。使用對(duì)象:變量、方法芍阎。 注意:不能修飾類(外部類)
    public : 對(duì)所有類可見世曾。使用對(duì)象:類、接口谴咸、變量轮听、方法
    protected: 對(duì)同一包內(nèi)的類和所有子類可見。使用對(duì)象:變量岭佳、方法血巍。 注意:不能修飾類(外部類)。

    訪問控制

  • 訪問控制和繼承
    請(qǐng)注意以下方法繼承的規(guī)則:
    1.父類中聲明為 public 的方法在子類中也必須為 public珊随。
    2.父類中聲明為 protected 的方法在子類中要么聲明為 protected述寡,要么聲明為 public,不能聲明為 private叶洞。
    3.父類中聲明為 private 的方法鲫凶,不能夠被繼承。

  • 非訪問修飾符

static關(guān)鍵字
static關(guān)鍵字特點(diǎn):
a. 隨著類的加載而加載衩辟;
b. 優(yōu)先于對(duì)象存在螟炫;
c. 被類的所有對(duì)象共享;
d. 可以通過類名調(diào)用艺晴;

static的注意事項(xiàng):
1)在靜態(tài)方法中沒有this關(guān)鍵字
靜態(tài)是隨著類的加載而加載昼钻,this是隨著對(duì)象的創(chuàng)建而存在;
2)非靜態(tài)的成員方法可以訪問靜態(tài)成員變量财饥,靜態(tài)方法不能訪問非靜態(tài)的成員變量(靜態(tài)只能訪問靜態(tài))换吧;
3)靜態(tài)對(duì)象和靜態(tài)方法可以通過對(duì)象調(diào)用,也可以使用類名調(diào)用钥星,推薦使用類名調(diào)用沾瓦;

final 修飾符
1.final 變量
final 變量能被顯式地初始化并且只能初始化一次。被聲明為 final 的對(duì)象的引用不能指向不同的對(duì)象谦炒。但是 final 對(duì)象里的數(shù)據(jù)可以被改變贯莺。也就是說 final 對(duì)象的引用不能改變,但是里面的值可以改變宁改。
final 修飾符通常和 static 修飾符一起使用來創(chuàng)建類常量缕探。
2.final 方法
類中的 final 方法可以被子類繼承,但是不能被子類修改还蹲。
聲明 final 方法的主要目的是防止該方法的內(nèi)容被修改爹耗。
3.final 類
final 類不能被繼承耙考,沒有類能夠繼承 final 類的任何特性。

abstract 修飾符
1.抽象類
抽象類不能用來實(shí)例化對(duì)象潭兽,聲明抽象類的唯一目的是為了將來對(duì)該類進(jìn)行擴(kuò)充倦始。
2.抽象方法
抽象方法是一種沒有任何實(shí)現(xiàn)的方法,該方法的的具體實(shí)現(xiàn)由子類提供山卦。
任何繼承抽象類的子類必須實(shí)現(xiàn)父類的所有抽象方法鞋邑,除非該子類也是抽象類。
如果一個(gè)類包含若干個(gè)抽象方法账蓉,那么該類必須聲明為抽象類枚碗。抽象類可以不包含抽象方法。

synchronized 修飾符
synchronized 關(guān)鍵字聲明的方法同一時(shí)間只能被一個(gè)線程訪問铸本。

transient 修飾符
序列化的對(duì)象包含被 transient 修飾的實(shí)例變量時(shí)肮雨,java 虛擬機(jī)(JVM)跳過該特定的變量君纫。
該修飾符包含在定義變量的語句中私沮,用來預(yù)處理類和變量的數(shù)據(jù)類型。

public transient int limit = 55;   // 不會(huì)持久化
public int b; // 持久化

volatile 修飾符
volatile 修飾的成員變量在每次被線程訪問時(shí),都強(qiáng)制從共享內(nèi)存中重新讀取該成員變量的值汪茧。而且,當(dāng)成員變量發(fā)生變化時(shí)限番,會(huì)強(qiáng)制線程將變化值回寫到共享內(nèi)存舱污。這樣在任何時(shí)刻,兩個(gè)不同的線程總是看到某個(gè)成員變量的同一個(gè)值弥虐。
一個(gè) volatile 對(duì)象引用可能是 null扩灯。

位運(yùn)算符

<<n 向左移n次,相當(dāng)于乘以2的n次方
>>n 向右移n次霜瘪,相當(dāng)于除以2的n次方

>>> 無符號(hào)右移和>> 有符號(hào)右移區(qū)別:
>>>:無論高位是0還是1珠插,移動(dòng)后都用0補(bǔ)位
>>:高位是0就補(bǔ)0,高位是1就補(bǔ)1

public class Test {
  public static void main(String[] args) {
     int a = 60; /* 60 = 0011 1100 */ 
     int b = 13; /* 13 = 0000 1101 */
     int c = 0;
     c = a & b;       /* 12 = 0000 1100 */
     System.out.println("a & b = " + c );
 
     c = a | b;       /* 61 = 0011 1101 */
     System.out.println("a | b = " + c );
 
     c = a ^ b;       /* 49 = 0011 0001 */
     System.out.println("a ^ b = " + c );
 
     c = ~a;          /*-61 = 1100 0011 */
     System.out.println("~a = " + c );
 
     c = a << 2;     /* 240 = 1111 0000 */
     System.out.println("a << 2 = " + c );
 
     c = a >> 2;     /* 15 = 1111 */
     System.out.println("a >> 2  = " + c );
  
     c = a >>> 2;     /* 15 = 0000 1111 */
     System.out.println("a >>> 2 = " + c );
  }
} 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颖对,一起剝皮案震驚了整個(gè)濱河市捻撑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缤底,老刑警劉巖顾患,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異个唧,居然都是意外死亡江解,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門徙歼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犁河,“玉大人鳖枕,你說我怎么就攤上這事〗奥荩” “怎么了耕魄?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)彭谁。 經(jīng)常有香客問我吸奴,道長(zhǎng),這世上最難降的妖魔是什么缠局? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任则奥,我火速辦了婚禮,結(jié)果婚禮上狭园,老公的妹妹穿的比我還像新娘读处。我一直安慰自己,他們只是感情好唱矛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布罚舱。 她就那樣靜靜地躺著,像睡著了一般绎谦。 火紅的嫁衣襯著肌膚如雪管闷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天窃肠,我揣著相機(jī)與錄音包个,去河邊找鬼。 笑死冤留,一個(gè)胖子當(dāng)著我的面吹牛碧囊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纤怒,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼糯而,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了泊窘?” 一聲冷哼從身側(cè)響起熄驼,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎州既,沒想到半個(gè)月后谜洽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吴叶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年阐虚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚌卤。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡实束,死狀恐怖奥秆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咸灿,我是刑警寧澤构订,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站避矢,受9級(jí)特大地震影響悼瘾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜审胸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一亥宿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砂沛,春花似錦烫扼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至静浴,卻和暖如春堰氓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背马绝。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工豆赏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人富稻。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像白胀,于是被迫代替她去往敵國(guó)和親椭赋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法或杠,類相關(guān)的語法哪怔,內(nèi)部類的語法,繼承相關(guān)的語法向抢,異常的語法认境,線程的語...
    子非魚_t_閱讀 31,639評(píng)論 18 399
  • 本文出自 Eddy Wiki ,轉(zhuǎn)載請(qǐng)注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,206評(píng)論 0 5
  • 我的博客[http://lovexiaoai.cn/]我的博客:面試總結(jié)-Java基礎(chǔ)(一)[http://lov...
    笑笑百味人生閱讀 7,170評(píng)論 6 64
  • 一:java概述:1挟鸠,JDK:Java Development Kit叉信,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,654評(píng)論 0 11
  • 沒想到這么快就被分手了硅急,真的好痛苦,老是胡思亂想佳遂,大晚上的老師睡不著营袜,為什么要這樣對(duì)我,感覺自己快精神分裂了丑罪,而且...
    小嬋兒閱讀 338評(píng)論 0 0