java學習筆記(基礎篇)—變量與表達式

一:局部變量和實例變量

  • 定義變量是指設定變量的數據類型和變量的名字,Java語言要求變量遵循先定義,再初始化,而後使用的規則。java

  • 做用域:指它的存在範圍,只有在這個範圍內,程序代碼才能訪問它。
    變量的生命週期是指從一個變量被建立並分配內存空間開始,到這個變量被銷燬並清除其所佔用內存空間的過程。code

    局部變量(參數變量也能夠當作是局部變量):

    1)位置:定義在方法中或者在方法中的{}
    2)使用:先賦值後使用
    3)做用域:定義的方法中或者定義的{}中
    4)生命週期:從變量的定義到方法調用結束對象

    局部變量的例子:
    public void method1() {
        int a = 0;   //局部變量,做用域爲整個method01方法;
         { int b = 0; //局部變量,做用域爲所處的代碼塊;
             b = a;
         }
         b = 20;   //編譯出錯,b不能被訪問;
    }

    實例變量:

    1)位置:定義方法外,類裏面
    2)使用:系統會進行默認初始化
    3)做用域:做用於整個類
    4)生命週期:從對象建立的時候到gc回收內存結束繼承

    實例變量的例子:
    class Test {
          private int n1=0;
          private int n2=0;
          public int add() {
             int result = n2 + n2;
             return result;
           }
    }

二:操做符:

  • 操做符能與相應類型的數據組成表達式,來完成相應的運算。接口

    a)數學運算操做符

    +數據類型值相加或字符串鏈接;
    System.out.println(1+2+"a");          //輸出3a
    System.out.println(1+2.0+"a");        //輸出3.0a
    System.out.println(1+2.0+"a"+true);   //輸出3.0atrue
    System.out.println("a"+1+2);          //輸出a12
    System.out.println(1+"a"+2);          //輸出1a2
    /整除, 如操做數均爲整數,運算結果爲商的整數部分
    int a1=12/5;      //a1變量的取值爲2
    int a2=13/5;      //a2變量的取值爲2
    int a3=-12/5;     //a3變量的取值爲-2
    int a4=-13/5;     //a4變量的取值爲-2
    int a5=1/5;       //a5變量的取值爲0
    double a6=-12/5;   //a6變量的取值爲-2.0   
    double a7=-12/5.0; //a7變量的取值爲-2.4
    %取模操做符, 如操做數均爲整數,運算結果爲商的整數部分
    int a1=1%5;      //a1變量的取值爲1
    int a2=13%5;     //a2變量的取值爲3
    double a3=1%5;    //a3變量的取值爲1.0
    double a4=12%5.1;  //a4變量的取值爲1.8000000000000007  /整除, 如操做數均爲整數,運算結果爲商的整數部分
    int a1=12/5;      //a1變量的取值爲2
    int a2=13/5;      //a2變量的取值爲2
    int a3=-12/5;     //a3變量的取值爲-2
    int a4=-13/5;     //a4變量的取值爲-2
    int a5=1/5;       //a5變量的取值爲0
    double a6=-12/5;   //a6變量的取值爲-2.0   
    double a7=-12/5.0; //a7變量的取值爲-2.4
    %取模操做符, 如操做數均爲整數,運算結果爲商的整數部分
    int a1=1%5;      //a1變量的取值爲1
    int a2=13%5;     //a2變量的取值爲3
    double a3=1%5;    //a3變量的取值爲1.0
    double a4=12%5.1;  //a4變量的取值爲1.8000000000000007

    b) 賦值操做符:

    = :   int x=0,i=1,j=1;
          *=:   這裏的"*="由操做符"*"和"="複合而成,它等價於 a=a*b,這種          複合操做符能使程序變得更加簡潔。
          /=:   a/=b 等價於 a=a/b;
          %=: a%=b 等價於 a=a%b;
    注意:+=和+的區別
        如:short a=0;
           int b=123456;
        a+=b;和a=a+b;的區別:
             +=系統會進行隱式的數據類型轉換,向=左邊的數據類型進行轉換。
             a+b會向數據類型高的類型轉換

    c) 比較操做符

>大於
>= 大於等於
<  小於
<= 小於等於
以上操做符只適用於整數類型和浮點數類型;
 int a=1,b=1;
 double d=1.0;
 boolean result1 = a>b;  //result1的值爲false;
 boolean result2 = a<b;  //result2的值爲false;
 boolean result3 = a>=d; //result3的值爲true;
 boolean result4 = a<=b; //result4的值爲true;

#### instanceof生命週期

判斷一個引用類型所引用的對象是不是一個類的實例。該操做符左邊是一個對象,右邊是一個類名或接口名。形式以下:內存

如:String str="hello"
   System.out.println(str instanceof String);
   System.out.println(str instanceof Object);
   System.out.println(str instanceof Student); //false

java.lang.Object是全部類的父類, 每個類都會默認繼承Object
子類是一個父類 是is a的關係作用域

d)相等操做符

== 等於
!= 不等於
既能夠是基本類型,也能夠是引用類型:
基本數據類型比較是真正的數值
引用類型比較的是地址,若是要比較引用類型真正的數據使用equals字符串

如:int a=1,b=1;
System.out.println(a==b);  //輸出true;
如:String s1="hello";
   String  s2="hello";
   String s3=new String("hello");
   String s4=new String("hello");
   System.out.println(s1==s2); //true
   System.out.println(s3==s4); //false
   System.out.println(s1==s3); //false
   System.out.println(s3.equals(s4)); //true

e) 移位操做符,針對二進制操做

算術右移位運算,也稱作帶符號右移位運算。最高爲補符號位。
> 邏輯右移位運算,也稱爲不帶符號右移位運算。
> << 左移位運算,也稱爲不帶符號左移位運算。

f) 位運算操做符

&:  與運算,運算規則爲:1&1->1, 1&0->0, 0&1->0, 0&0->0;   
|:  或運算,運算規則爲:1|1->1, 1|0->1, 0|1->1, 0|0->0;
^:  異或運算,運算規則爲:1^1->0, 1^0->1, 0^1->1, 0^0->0;
    兩個值相同爲0,不一樣爲1;
~ : 取反運算, ~1->0, ~0->1;

例如:8>>2====>8/2^2=2
8:0000...00001000 
  0000.........10 ====>2
8>>>3=====>8/2^3=1
8:0000...00001000 
  00000000.000001=====>1
8<<2======>8*2^2=32
8:0000...00001000 
  000000000100000======>32
1&1=1 1&0=0 0&0=0
1|1=1 1|0=1 0|0=0
1^1=0 1^0=1 0^0=0
~1=0
~0=1 
8&2=0  8|2=10  8^2=10
~8=
~2=

1010
10===>第三位置1===>14
10===>第二位清0===>8
10===>第一位置反===>11
10===>輸出相應的二進制

f) 邏輯操做符

短路操做符:  若是能根據操做左邊的布爾表達式就能推算出整個表達式的布爾值,將不執行操做符右邊的布爾表達式;
&&:左邊的布爾表達式的值爲false, 整個表達式值確定爲false, 
         此時會忽略執行右邊的布爾表達式。
||:左邊的布爾表達式的值爲true, 整個表達式值確定爲true, 
         此時會忽略執行右邊的布爾表達式。 
if(條件1&&條件2){}  
   if條件1爲假,不會執行條件2
   if條件1爲真,會執行條件2
if(條件1||條件2){}  
   if條件1爲真,不會執行條件2
   if條件1爲假,會執行條件2

g) 條件操做符

布爾表達式 ? 表達式1 : 表達式2
若是布爾表達式的值爲true,就返回表達式1的值,不然返回表達式2的值。
int score = 61;
String result = score>=60?"及格":"不及格";

h)++,--
前++與後++
前--與後--
int a=10;
b=++a   =====>a=11,b=11,先計算,後賦值
b=a++   =====>a=11,b=10,先賦值,後計算
System.out.println("a:"+a+" b:"+b);

三.數據類型的轉換

1)基本數據類型轉換

隱式的數據類型轉換:精度小的數據給精度大的數據
強制(顯式)的數據類型轉換:(type)精度大的數據給精度小的數據
System.out.println((int)(char)(byte)-1);
數據類型在轉換的時候注意:
a)若是將精度小的數據轉爲精度大的數據時。
      若是轉以前是有符號數,在前面補符號位
      若是轉以前是無符號數,在前面補0
b)若是將精度大的數據轉爲精度小的數據時。
      從低位竊取位數

2)引用數據類型轉換

隱式的數據類型轉換:子類轉換父類
強制(顯式)的數據類型轉換:父類轉換子類
      String str="hello";
      Object o=str;
      String str2=(String)o;
相關文章
相關標籤/搜索