今日语录:脚底有阴影,是因为你在面向着太阳。
2.数据类型和运算符
(1)相关概念
- 标识符和关键字
- 标识符:用户自定义的符号。标识符由字母、数字、_、$组成,其中首字符不能是数字,不能为java关键字,标识符无长度限制,并且大小写敏感。
- 关键字:Java的保留字符,每个字符都有特定的含义,字母都小写。
- 分类:变量和方法、类名、包、常量(驼峰命名法、见文知义)
- 中括号表示可选。
- 变量和常量
- 变量:在程序运行时值可变的标识符。在内存中是一段有名字的连续存储空间 type varName[=value];
- 常量:在程序运行时值不可以改变的标识符。使用final关键字,声明时必须初始化,不能重新赋值 final int STU_AGE=22;
- 数据类型
- 基本数据类型: (1)数值型 整数类型(byte,short(系统不兼容,不建议使用),int,long) 浮点类型(float,double) (2)字符型(char) :两个字节存储单个字符,\t \n \r \b (3)布尔型(boolean):值为true和false,不能是0和1。
- 类型的自动转换,小转大自动,大转小强制
- 引用数据类型(1)类(Class)(2)接口(Interface)(3)数组(Array)(4)字符串
- java在内存中以堆(大量)栈(少量)模型存放数据,基本类型存放在栈中,引用类型存放在堆中 //临时空间整型默认int,浮点型默认double
- Java数据类型转换
- 自动类型转换:由小类型转换成大类型。例如:int i = (int) 9999L;
- 强制类型转换:由大类型转换成小类型。例如:float f = (float) 3.14;
- 成员变量和局部变量
- 成员变量:类中方法外的变量,也称全局变量。系统会赋默认值。 局部变量:方法中的变量,声明时最好赋初始值否则开发时可能会出错误。
- Java运算符
- 算术运算符:+, -,*, \,%, ++, -- 关系运算符:>,<,>=,<=,==,!= 赋值运算符: =,+=,-=,*=,/= 逻辑运算符:!,&&,||(效率更高) 位运算符: ~ ,&,|,^,>>,<<,>>>
- 累加累减
- 自增 (++) 和自减 (--) 运算符有两种写法:前缀(++i,--i)和后缀(i++,i--)。
- 前缀自增自减法 (++i,--i): 先进行自增或者自减运算,再进行表达式运算。
- 后缀自增自减法 (i++,i--): 先进行表达式运算,再进行自增或者自减运算
- 短路与或非
- 单个的逻辑运算符会将左右两个表达式都进行运算得出布尔值,再进行运算。
- ‘短路与’若左边表达式为false则不会对右边的表达式进行判断,因为结果必为false;
- ‘短路或’若左边表达式结果为true则不会对右边的表达式进行判断,因为结果必为true。
- 累加累减
- 算术运算符:+, -,*, \,%, ++, -- 关系运算符:>,<,>=,<=,==,!= 赋值运算符: =,+=,-=,*=,/= 逻辑运算符:!,&&,||(效率更高) 位运算符: ~ ,&,|,^,>>,<<,>>>
- Java表达式
- 可以分为开发环境JDK和运行环境JRE
- 表达式优先级
- C语言中bool和int类型的0和1可以自动转换
(2)思维导图
(3)课堂练习
- 累加累减练习
public class ArithmeticOpr {
public static void main(String[] args) {
int i1 = 10, i2 = 20;
int i = (i2++); // ++在i2后,故先运算(赋值)再自增
System.out.print("i=" + i);
System.out.println(" i2=" + i2);
i = (++i2); // ++在i2前,故先自增再运算(赋值)
System.out.print("i=" + i);
System.out.println(" i2=" + i2);
i = (--i1); // --在i1前,故先自减再运算(赋值)
System.out.print("i=" + i);
System.out.println(" i1=" + i1);
i = (i1--); // --在i1后,故先运算(赋值)再自减
System.out.print("i=" + i);
System.out.println(" i1=" + i1);
}
}
编译运行:
$ javac ArithmeticOpr.java
$ java ArithmeticOpr
i=20 i2=21
i=22 i2=22
i=9 i1=9
i=9 i1=8
- 短路与或非练习
public class Test {
public static void main(String[] args) {
int a = 1;
System.out.println(false & a++ == 1);
// 即使前面为false,右边的表达式还是会继续执行,即num++
System.out.println(a);// 2
int b = 1;
System.out.println(false && b++ == 1);
// 左边的表达式为false,右边的表达式将不会执行,即num不会自增
System.out.println(b);// 1
}
}
编译运行
$ javac Test.java
$ java Test
false
2
false
1
(欢迎您的意见和建议,感谢支持♥♥♥)