2 JAVA语法基础

1、标识符

  • 可以标识类名、方法名、变量名、接口名、常量名。
  • 命名规则:合法的标识符只能由数字、字母、下划线、美元符号组成,不含有其他符号。
  • 不能以数字开头,严格区分大小写(java要求)。
  • 关键字不能做标识符。
  • 最好见名知意(规范)。
  • 遵守驼峰命名方式(规范),UserService,CustomerService等等。
  • 类名、接口名:首字母大写UserName,后面每个单词首字母大写 (规范要求) ;
  • 变量名、方法名:首字母小写userName、后面每个单词首字母大写 (规范要求) ;
  • 常量名:全部大写NUMBER,多个单词的话以下划线隔开 (规范要求) ;

2、关键字

java关键字都是小写的:

举例:class extends implements interface import switch while false true null  boolean byte char int long

float double try catch throw finally abstract native private protected public static super void …

3、字面值

  • 10、100              “abc”
  • -‘a’                        true、false

C语言中上述称为常量,java称为字面值(数据),即一看即知其值,常量为其他。

数据类型分类:

* 10、100为整数型字面值;     * 3.14为浮点型字面值;     * true、false为布尔型字面值;

* “abc”,“中国”为字符串型;     * ’A’,’人’为字符型;

* java语言当中所有的字符串型字面值必须使用双引号(半角)括起来。

* java语言当中所有的字符型字面值必须使用单引号(半角)括起来。

字符和字符串区别:字符通常只占据一个字节,字符串可以占据多个字节;定界符不一样。

4、变量

内存:数据临时存储空间

System.out.println(1111100);

System.out.println(1111100);

System.out.println(1111100);

上述3个语句访问的是否为同一块存储空间?否,为不同的存储空间。可以定义一个变量,就可以重复访问同一块存储空间了。

(1)变量的定义

数据要存在内存空间中,存放数据的内存块可以命名,则这块含有名称的空间为变量。

  1. 变量本质上是内存中的一块空间,这块空间有数据类型、有名字、有字面值。
  2. 变量包含3部分:数据类型、名称、字面值(数据)。 //具体数据需和数据类型一致
  3. 变量是内存中存储数据的最基本单元。

(2)数据类型的作用

  1. 不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间。
  2. 数据类型是指导程序在运行阶段应该分配多大的内存空间。

(3)声明/定义变量的语法格式:

//合法标识符即可,首字母小写,后面每个单词首字母大写

(4)变量声明后赋值:

//字面值数据需和变量的数据类型一致

       “=”是一个赋值运算符,优先运算右边的表达式。

声明和赋值同时完成:int i = 10,变量赋值后可以重新赋值。*变量的概念使得内存空间得到重复使用。

访问变量的两种访问形式:读取变量中保存的具体数据get;修改变量中保存的具体数据set;

变量在一行上可以声明多个: int a, b, c;    如果int a, b, c=300; 则只赋值了c。

方法体中的代码执行顺序自上而下逐行执行。类体中无直接java语句。

同一个“作用域”中,名称相同的变量不能重复声明。

(5)变量的作用域

作用域即有效范围。在一定范围内变量可以被访问,超出范围则无法访问。

变量的作用域:出了大括号就不认识了。

(6)变量的分类:

根据变量声明的位置来分类:

     * 局部变量:在方法体当中声明的变量称为局部变量。

     * 成员变量:在方法体外[类体之内]声明的变量称为成员变量。成员变量没有手动赋值会默认赋值。

5、数据类型

作用:指导JVM在运行程序的时候给该数据分配多大的内存空间。

数据类型两种:基本数据类型引用数据类型

字符串(使用双引号”abc”)属于引用数据类型。

基本数据类型分为:4大类8小种。

  • 类1:整数型:int, long, short, byte
  • 类2:浮点型:float, double
  • 类3:布尔型:boolean
  • 类4:字符型:char

6、数据类型讲解

基本数据类型各自占用空间大小:

基本数据类型

占用空间大小

取值范围

byte

1

-128 ~127( 01111111 )或-2^7 ~ 2^7-1

short

2

-2^15 ~ 2^15-1

int

4

有符号int:-2^31 ~ 2^31-1

无符号int:0 ~ 2^32-1

long

8

-2^63 ~ 2^63

float

4

-2^128 ~ 2^128

double

8

-2^1024 ~ 2^1024

boolean

1

[True, False]

char

2

0 ~ 65535或0 ~ 2^16-1

计算机任何情况下都只识别二进制。只认识101010101010100001110101…

[现代计算机底层采用交流电的方式,接通和断开两种状态,计算机只识别1或0。]

十进制表示满十进一原则。二进制表示满二进一原则。

字节(byte)

1 byte = 8 bit   [1个字节 = 8个比特位],一个比特位就是一个二进制位,0或1。

1 KB = 1024 byte          1 MB = 1024 KB

1 GB = 1024 MB           1 TB = 1024 GB = 2^43比特位

二进制和十进制之间转换:

二进制转十进制:2的幂次方。

十进制转二进制:十进制数除2取余数0或1。

 

最先出现的字符编码:ASCII码

java语言源代码采用的是unicode编码方式,因此“标识符”可以用中文。

实际开发一般用UTF-8编码较多。

转义字符char a = ‘\n’;为一个字符,表示换行。

制表符char a = ‘\t’;

反斜杠字符char a = ‘\\’;      如果为char a = ‘\’;则\将’转义,声明未完成。

浮点型

double d = 3.0;

类型转换:float f = (float)5.1;     float f = 5.1f;    两种表达方式。

布尔型

boolean 只有两个值true和false,没有其他值。布尔类型通常使用在逻辑运算和条件控制语句当中。

关于基本数据类型之间的互相转换:转换规则

1、八种基本数据类型当中除布尔类型之外剩下的7种类型之间都可以互相转换。

2、小容量像大容量转换,称为自动类型转换,容量从小到大排序:

byte < short < int < long < float < double

            char <

注:任何浮点类型不管占用多少个字节,都比整数型容量大。

        char和short可表示的种类数量相同,但是char可以取更大的正整数。

3、大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以需要谨慎使用。

4、当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量。

5、byte,short,char混合运算的时候,各自先转换成int类型再做运算。

6、多种数据类型混合运算,先转换成容量最大的那种类型再做运算。

7、运算符

*  算术运算符                           *  关系运算符

*  逻辑运算符                           *  字符串连接运算符

*  三元运算符                           *  赋值类运算符

a. 算术运算符   (+求和、-相减、*乘积、/商、%求余数,取模、++自加1,--自减1)

运算符有优先级,不确定的加括号(),优先级得到提升。

可以“i++“也可以”++i“。i++为单目运算符。

//++出现在变量前
int m = 20;
int n = ++ m;
System.out.println(m);   //21
System.out.println(n);   //21
//++出现在变量后,先做赋值运算,再对变量中的保存的值进行自加一。
int a = 100;
int b = a ++;
System.out.println(a);    //101
System.out.println(b);     //100
int e = 100;
System.out.println(e ++);   //100,先打印后赋值
System.out.println(e);   //101
int s = 100;
System.out.println(++ s);  //101,先赋值后打印
System.out.print(s);   //101

b. 关系运算符

>   大于                                    >=  大于等于

<   小于                                    <=  小于等于

==  等于                                    !=  不等于

=   赋值运算符

==  关系运算符

关系运算符比较的是两个变量中保存的值。

c. 逻辑运算符/布尔运算符

逻辑与(两边都为真才是真)             |   逻辑或(只要一个为真就是真)

 逻辑非 (取反,!false为真)             ^   逻辑异或(两边算子不一样结果为真)

&& 短路与                                ||   短路或

  • 逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型。
  • 短路与和逻辑与最终的运算结果相同,只是短路与存在短路现象。
  • 短路或和逻辑或最终的运算结果相同,只是短路或存在短路现象。
  • 什么情况发生短路现象? * 第一个条件表达式为假false,会发生短路与;*  第一个条件表达式为真true,会发生短路或;