Java基础——Java语言基础2

Java语言基础——变量专题

一、含义

  变量是编程中的最基本的概念之一。对于Java语言而言,每一个都变量都代表着内存中的一小块区域,而这块区域能够用来存放某个数据。就像生活当中,如果把数据比作东西,变量就是盒子。

 Java基础——Java语言基础2

 

定义变量:变量类型  变量名;比如 int a;

Java基础——Java语言基础2

二,数据/变量类型

强类型:变量类型必须和数据类型一致

弱类型:变量类型可以和数据类型不一致

 Java基础——Java语言基础2

Java基础——Java语言基础2

Java语言中,变量都是强类型的。

数据类型分为对象类型简单类型基本类型/原始类型)。对象类型有很多,但基本类型有8种。

基本类型:

①整数类型

 Java基础——Java语言基础2

一个字节8位,0或1。   2^8=256个数

 Java基础——Java语言基础2

引入一个概念字面值,即可以为一种数据类型的变量赋予的什么样的值。

如:byte b=200;  错误

           short s=200; 正确

   200不是byte的字面值但可以是short的字面值

 再如long l=10L;

10后面加字母L更加明确的表示10是long的字面值,如果不加L也对,但系统会默认10是int的字面值,相当于是int赋值给long.其中所加字母L大小写不区分

②浮点类型

float  单精度浮点数 4B  如float f=1.4f;

double 双精度浮点数 8B  如double d= 1.4d;

 注意:1,float类型后面赋值数一定要加f,大小写均可,double类型后面赋值数可以省略d。

                2,double赋值数也可以用科学计数法,如double d=1.4e10;其中1.4e10=1.4*10^10.

               3,一般小数默认为double类型。如1.4——系统默认为double类型。

③字符类型

Ⅰ,char   采用unicode国际编码方式  2B

   一个字符和一个正数都是对应的,因为一个字符需要转化成整数存储在硬盘里。如’a’<==>65

   char有三种字面值

      char c1=’a’;

       char c2=65;

              char c3=’\u0041’;

            1,所以char和int是相通的,可以参与运算

           2,’\u0041’16进制表示法

                  char 2B  16bit

     二进制数有16个数转换成16进制就有4个数,四个一位,所以就是0041

 Java基础——Java语言基础2

Ⅱ,转义字符

‘\t’    水平挑格

‘\n’    换行

‘\’’   单引号

‘\”’   双引号

‘\\’    反斜杠

④布尔类型

boolean   字面值是true  false,有特殊含义不能作为标识符,也不能参与运算

   注意:除了8种类型之外,还要强调一下String 字符串,不算基础类型,字面值是“HelloWorld”,只能参加加法运算,表示字符串连接,如

                                        “AB+CD=ABCD

                                        “AB+10=AB10

       除了8种基本类型和特殊的String外,其他变量都不可以参加运算

三,类型转换

 类型转换分为自动类型转换和强制类型转换.

           如果把类型比作盒子,字节小的就是小盒子,字节大的就是大盒子,小盒子放在大盒子里很容易(自动类  型转换),大盒子放在小盒子里放不下,强制把大盒子放进小盒子里,就需要把大盒子多余的地方舍去再放进  去,但舍去的一部分如果有东西,那么这个盒子就变了(数值发生变化),但舍去的地方没用,这个盒子就没  什么 变化(数值恰好不变)(强制类型转换)。

             如:int i;  short s;

       自动类型转换  i=s;        ——数值不变

       强制类型转换  s=(short)i; ——数值可能变化

                    ①,自动类型转换

                           int  4B   10——> double   8B  10.0

                    ②,强制类型转换

                            int i=10;                        4B

                            short s=(short)i;       2B

          把int比作4个盒子,short比作2个盒子

                                                Java基础——Java语言基础2

Ⅰ,数值不变

short s=10;

byte  b=(byte)s;

10    short ——>0000 0000 0000 1010 ——>10

10    byte  ——>                  0000 1010 ——>10

舍掉高字节,数值不变

Ⅱ,数值变化

short s=280;

byte  b=(byte)s;

280    short ——>0000 0010 0001 1000 ——>280

280    byte  ——>                   0001 1000 ——>24

舍掉高字节,数值变化

四,自动类型提升

a+b

如果a和b有double  ====>double

如果a和b有float      ====>float

如果a和b有long      ====>long

其他默认结果          ====>int

五,运算符

表达式:变量和字面值用某个运算符连接的式子。如a+b,2+c。表达式必须有固定的值,形成表达式的关键元素——运算符。

运算符

①数学运算符

   +    -    *    /     %(模)   

10%3=1

a%2=___  1 奇数

a%2=___  0 偶数

 

4/5=0    4 .0/5=0.8

    ②赋值运算符

=   +=    -=   /=   ++  --……

a+=3   ==>a=a+3  

a-=3    ==>a=a-3

两者区别是前者不会发生自动类型提升后者会

a++  a+=1  先取值后+1

++a  a+=1  先+1后取值

如:a=4  a++等于4,++a等于5,最终结果a=5

③布尔运算符

==   >   <<  >=  <=  !=  

a==b  用于判断  

a等于b 结果为true

a不等于b 结果为false

④逻辑运算符

&&(与)    ||(或)     ! (非)

(a>b)&&(c<<d)

⑤移位运算符

>>     <<     >>>  

a=10110;

a>>1  ==>   01011     右移位   /2

a<<1  ==>   101100    左移位   *2

 

 

⑥位号运算符

   ?:   

判断如果问号前面正确结果为冒号前面的值,如果错误结果为冒号后面的值

如(a>b)?3:2

a>b 正确,结果为3

a>b 错误,结果为2

   

⑦不常用运算符

&   |   ~   ^

按位求与、或、反、异或

1011

             & 1001        

             1001        都为1等于1,否则为0


 1011

                    | 1001        

             1011        一个为1等于1,否则为0


 1011

                   &1001        

              1001        都为1等于1,否则为0

 

 

         1011

              ^ 1001        

                1001        相同为1,不用为0

 

       ~1011 = 0100

注意:

(a>b)&(c<d)       非短路   

不管一个条件是否符合,第二个也要判断

(a>b)&&(c<d)       短路     

只要第一个条件符合,第二个就不用判断