标识符和关键字:
1、分隔符
1.1 分号:语句的分隔
1.2 花括号:定义一个代码块 {} 成对出现
1.3 方括号:访问数组元素
a [3] = 3; 即试图为 名为a的数组的第四个元素赋值
1.4 圆括号:
定义方法时用来包含所有参数声明
调用方法时用来传入参数值
将表达式中某一个部分括成一个整体,保证此部分优先计算
强制类型转换的运算符
1.5 空格:分隔一条语句的不同部分 | 合理缩进代码
空格符(space)、制表符(Tab)、回车(Enter)
1.6 圆点:用作类/对象和它的成员之间的分隔符
2、标识符: 给程序中变量、类、方法命名的符号
字母、数字、下划线、美元符号
不能是关键字和保留字
不能含有空格
3、Java关键字:具有特殊用途的单词
数据类型分类:
声明变量:type varName [ = 初始值 ];
基本数据类型
整型:
一般情况数值默认为int类型,较小整数值默认为byte或short,巨大整数值后面加L变为long值
二进制 0b开头
八进制 0开头
十六进制 0x开头
字符型:
浮点型:
布尔型:
基本类型的类型转换
自动类型转换1
运行结果为
自动类型转换2
运行结果为
强制类型转换
强制转换类型加()
运行结果为
溢出规则:该数-目标类型大小*n
233 - 256(byte大小) = - 23
浮点数转整数始终取整
实际操作1:制作一个能生成6位英文随机字母的字符串
超前知识:
for循化
Math.random() : 随机生成一个大于等于0,小于1的数
char 97~122为小写英文字母a~z,具体可查ASCII表
运行之后可以得到6为英文字母随机数
另一个思路
通过Random rnd = new Random() , 来实现
代码之前一直报错,错因:开头没有 import 方法
得到结果:缺点缺少换行,难以阅读
进一步改进,结合String
代码之前一直报错,错因:没有String result
得到结果
实际操作2:字符串转基本类型:
所需方法:Integer.parseInt()
得到结果
在编辑Java源文件时,System.out.println()被我括在了main{}之外,导致编译时一直提示
以后需要注意此问题
表达类型的自动提升
得到结果
表达式的数据类型自动给提升到与表达式中最高等级操作数同样的操作
直接量:程序中通过源代码直接给出的值
int a = 5,为变量a说分配的初始值5就是一个直接量
1.直接量的类型:基本类型、字符串类型、null类型
2.直接量的赋值:
int a = 5;
char c = 'a';
boolean b = true;
float f = 5.12f;
double d = 4.12;
String author = "Jochen"
运算符:用以表示数据的运算、赋值和比较等
1. 算术运算符:
加、减、乘、除、求余、自加、自减
除法中,整数类型除数不可以为0,结果截断取整,
两个操作数有一个是浮点数,或者两个数都是浮点数,则结果也是浮点数,此时除数可以为0,或者是0.0,得到结果是正无穷大或负无穷大。
除法运算
求余运算
自加:++
自加运算只能操作单个数值型的变量,不能操作常量或表达式
++放在操作数左边:先把操作数加1,再把操作数放入表达式运算
++放在操作数右边:先把操作数放入表达式运算,再把操作数加1
++在右边
得到结果
++在左边
得到结果
自减:--
同自加,操作数减1
更复杂的运算符:借助 java.lang.Math 类工具完成
得到结果
2. 赋值运算符:
用于为变量指定变量值,使用=作为赋值运算符
String str = "Java"; // 为变量str赋值为Java
double pi = 3.14; // 为变量pi赋值为3.14
boolean visited = true; // 为变量visited赋值为true
String str2 = str; // 将变量str的值赋给str2
使用多个赋值运算符,可以一次为多个变量赋值:(但是不推荐)
将表达式的值赋给变量:
double d1 = 12.34;
double d2 = d1 + 5; // 将表达式的值赋给d2
System.out.println(d2); // 输出d2的值,将输出17.34
3. 位运算符
按位与:& ,当两位同时为1时才返回1
按位或:| ,只要有一位为1即可返回1
按位非:~,单目运算符,将操作数的每位全部取反
按位或异:^,当两位相同时返回0,不同时返回为1
左移运算符:<<
右移运算符:>>
无符号右移运算符:>>>
4. 扩展后的赋值运算符
+=:对于x += y, 对应 x = x + y;
-=:对于x -= y, 对应 x = x - y;
*=:对于x *= y, 对应 x = x * y;
/=: 对于x /= y, 对应 x = x / y;
%=:对于x &= y, 对应 x = x & y;
|=:对于x |= y, 对应 x = x | y;
^=:对于x ^= y, 对应 x = x ^ y;
<<=:对于x <<= y, 对应 x = x << y;
>>=:对于x >>= y, 对应 x = x >> y;
>>>=:对于x >>>= y, 对应 x = x >>> y;
5. 比较运算符
大于:>,只支持左右两边为数值类型,如果前面变量的值大于后面变量的值,则返回true
大于等于:>=,只支持左右两边为数值类型,如果前面变量的值大于等于后面变量的值,则返回true
小于:<,只支持左右两边为数值类型,如果前面变量的值小于后面变量的值,则返回true
小于等于:<=,只支持左右两边为数值类型,如果前面变量的值小于等于后面变量的值,则返回true
等于:==,如果进行比较的两个操作数都是数值类型,即使数据类型不同,只要它们值相等,也返回ture。例如:97 == 'a' 返回true,5.0 == 5 返回true。如果进行比较的两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,而且两个引用必须指向同一个对象才会返回true。
不等于:!=,如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们值不相等,也都返回ture。如果进行比较的两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回true。
得到结果
6. 逻辑运算符
与:&&,前两个操作数必须都是true才返回true,否则返回false
不短路与:&,与&&相同,但不会短路
或:||,只要两个操作数中有一个是true,就可以返回true,否则返回false
不短路或:|,与||相同,但不会短路
非:!,只需要一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true
异或:^,当两个操作数不同时才返回true,如果两个操作数相同则返回false
得到结果
对于短路逻辑 || 而言,如果第一个操作数返回true,|| 将不会再对第二个操作数求值,直接返回true
对于短路逻辑&&而言,如果第一个操作数返回false,&& 将不会再对第二个操作数求值,直接返回false
7. 三目运算符:只有一个 ? :
(expression) ? if-true-statement : if-false-statement;
即:先对逻辑表达式expression求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false,则返回第三个操作数的值。