注释
//单行注释
/*多行注释*
区块注释*/
//类是Java当中所有源代码的基本组织单位
public class HelloWorld{
//程序执行的起点
public static void main(String args[]){
//打印语句
System.out.println("HelloWorld2020");
}
}
关键字:有特殊含义,被保留的,不能随意使用的字符
常量
- 字符串常量:""中可以有多个字符,或者0个
- 字符常量:’'中有且仅有一个字符,0个不行
- 空常量:
数据类型
- 8中基本数据类型
byte,short,int,long,float,double,boolean,char - 引用类型:如String,List等
- 字符串不是基本类型,而是引用类型
- 浮点型可能只是一个近似值,并非精确的值
- 数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但float4字节long8字节
- 浮点数默认是double,要用float则在后边加上F(不加则报错)
- 整数默认int类型,如果要用long类型需要加上一个L(不加则转为int类型)
变量
程序运行期间,内容可以发生改变的量
创建格式:
1定义+赋值
数据类型 变量名称;
变量名称=数据值;
int a;
a=2;
Double b;
b=“Hi”;
- = -->赋值,将右边的数据值,赋值交给左边的变量
2一步到位
数据类型 变量名称=数据值;
int a=3;
String=“Hello”;
float=3.14;
3创建
数据类型 变量名称1=数据值;
变量名1=变量名2;
- 使用变量的注意事项
- 多个变量之间的名称不可以重复
- 注意数据类型的范围
- 变量需赋值后才能使用
- 注意所定义的变量的作用域到所属的大括号为止
- 不建议使用一个语句创建多个变量
数据类型转换
自动类型转换(隐式)
- 特点:自动转换
- 规则:数据范围从小到大
如byte和short运算时自动转换为int类型进行运算
强制类型转换(显式)
- 特点:代码需要进行特殊处理,不能自动给完成
- 格式:范围小类型名 变量名=(范围小类型名)范围大的数据类型
eg: int a=(int)100L;
- 注意事项
-
数据溢出:当右边数值大于左边变量类型时发生溢出
eg: int a=(int)600000000000L;
-
精度损失:大范围类型–>小范围类型
eg: int a=(int)3.5;---->3
int b=41L;
当不超过小范围数据类型时可以强制转换
eg: int b=(int)41L; -
byte/short/char这三种数据类型可以发生数学运算,例如加法"+"
运算时候会被提升为int类型,然后再计算
byte a=40;
byte b=50;
byte c=a+b;//错误精度损失,应当int c=a+b; -
boolean 类型不能发生数据类型转换
ASCII码表
’0’–>48
‘A’–>65
‘a’–>97
Unicode码表
0-127和ASCII一样
算数运算符
四则运算
- 对于整数表达式,除法用的整数,整数除以整数,结果还是整数,只看商,不看余数
- 只有对于整数的除法来说取模运算才有余数的意义
- 若运算当中有不同类型的数据,结果会是数据类型范围大的
- +常见用法:
- 对于数值,就是加法
- 对于char类型,计算之前,char会被提升为int,然后计算,结果得int
eg:’A‘+’B‘–>131 - 对于String字符串来说,加号代表字符串连接操作
任何数据类型和字符串进行连接的时候,结果都会变成字符串
自增自减运算
含义:让一个变量加/减1
使用格式:变量名之前或者变量名之后
eg: ++a,–a,a++,a–
使用方式:
- 单独使用:自己成为一个独立步骤
- 混合使用:和其他操作混合,例如与赋值,打印操作混合等
使用区别: - 单独使用时,前后+±-没有区别
- 混合使用时有【重大区别】
A.前++:变量立刻+1,然后使用其结果–>【先加后用】
B.后++:先用其原来的值,然后+1 -->【先用后加】
eg:
- 注意事项:只有变量才能使用自增自减运算符。常量不可发生改变,所以不能用
eg:20++ , 20–
赋值运算符
- 基本赋值运算符:=
- 复合赋值运算符:+=,-=,*=,/=,%=
eg: a+=3–>a=a+3 - 注意事项:
- 只有变量才能使用赋值运算符,常量不能进行赋值
- 复合赋值运算符其中隐含了一个强制类型转换
eg:
比较运算符
- 注意事项
- 比较运算符结果是boolean类型值,成立为true,不成立为false
- 如果进行多次判断不能连着写,用逻辑运算符来进行连接
eg: 1<x<4–>错误
逻辑运算符
- 与(并且) && 全true才true;否则为false
- 或(或者) || 至少一个true,就是true;全是false,才是false
- 非(取反) ! 本来是true,变为false;本来是false,变成true
- 与和或具有短路效果:if根据左边能判断最终结果,则右边不在执行,可以节省性能
- 注意事项
三元运算符
相当于一个if和else if的一个判断
语法:数据类型 变量名=条件表达式?数据1:数据2
eg:
运算符优先级表
- 赋值<三目<逻辑<关系<算术<单目
其余运算符
转自:https://blog.csdn.net/tiansheshouzuo/article/details/85851845
一、左移( << )
形式:a<<b
含义:将a的数值在二进制下向左移动b个位置
示例:5<<2
//原数值
0000 0101
//左移后
0001 0100
//结果
20
二、右移( >> )
形式:a>>b
含义:将a的数值在二进制下向右移动b个位置,左边的用原有标志位补充
示例:5>>2
//原数值
0000 0101
//左移后
0000 0001
//结果
1
三、无符号右移( >>> )
形式:a>>>b
含义:将a的数值在二进制下向右移动b个位置(高位空出的部分总是用0进行补位)
四、位与( & )
形式:a&b
含义:将a和b的数值在二进制下逐位比较,相同取1,不同取0,得到一个新的与原a/b二进制位数相同的数值
五、位或( | )
形式:a|b
含义:将a和b的数值在二进制下逐位比较,全都为0则新数字对应位数取0,否则取1。
六、位异或( ^ )
形式:a^b
含义:将a和b的数值在二进制下逐位比较,相同取0,不同取1,得到一个新的与原a/b二进制位数相同的数值
七、位非( ~ )
形式:~a
含义:将a在二进制下的每个数字取0/1的反值,遇0取1,遇1取0,得到新的数字