一、注释
1.1、注释概述
用于解释说明程序的文字,提高程序的阅读性,可以帮助排错。
1.2、Java中注释分类格式
单行注释
格式: // 注释文字
多行注释
格式: /* 注释文字 * /
文档注释
格式:/** 注释文字 */
二、关键字与标识符
2.1、关键字
被Java语言赋予特定含义的单词,组成关键字的字母全部小写。
其中goto和const作为保留字存在,目前并不使用。
2.2、标识符
2.21、标识符的概述
就是给类,接口,方法,变量等起名字时使用的字符序列
2.22、组成规则
英文大小写字母
数字字符
$和_
2.23、注意事项
不能以数字开头
不能是Java中的关键字
区分大小写
2.24、常见命名规则
类或者接口
一个单词:首字母大写。多个单词:每个单词首字母大写。
方法和变量
一个单词:全部小写。多个单词:从第二个单词开始每个单词的首字母大写。
常量
一个单词:全部大写。多个单词:全部大写,单词之间用下划线隔开。
三、数据类型
3.1、常量与变量
3.11、常量
在程序执行的过程中其值不可以发生改变,分为字面值常量和自定义常量。
public static void main(String[] args) {
System.out.println(100);
System.out.println(3.14);
System.out.println('a');
System.out.println("java");
System.out.println(true);
System.out.println(false);
}
3.12、变量
在程序执行的过程中,在某个范围内其值可以发生改变的量
定义格式为:
数据类型 变量名 = 初始化值;
public static void main(String[] args) {
byte a=122;
int b=100;
short c=20;
long d=1000000L;
float e=3.14F;
double f=6.112;
boolean g=true;
char h='j';
}
3.2、数据类型的概述
其中整数默认为int;浮点数默认为double;
3.3、数据类型所占内存大小
3.4、注意事项
1、作用域
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
2、初始化值
没有初始化值不能直接使用
3、在一行上建议只定义一个变量
可以定义多个,但是不建议
4、在使用long和fioat时要再后边加上L和F,否则编译会报错。
3.5、自动转换和强制转换
自动转换(从小到大):在参与运算时byte,short,char—int—long—float—double
byte,short,char相互之间补转换,他们参与运算首先转换为int类型
public static void main(String[] args) {
int a=4;
byte b=3;
int c=a+b;
byte cc=a+b;//编译报错,因为可能损失精度
}
强制转换(从大到小):可能造成精度损失,一般情况下不使用。
目标类型 变量名=(目标类型)(被转换的数据);
public static void main(String[] args) {
int a=4;
byte b=3;
int c=a+b;
byte cc= (byte)(a+b);
}
下面两种定义变量的方式不同,建议使用第一种:
float e=12.333F;
float f=(float)12.333;//可能损失精度
3.51、数据溢出
byte aa=(byte)130;
System.out.println(aa);//打印值为-126
以下为该强制转换的运行步骤:
1、首先将130转换为二进制
130---------------------------00000000 00000000 00000000 10000010
2、因为符号位是0,所以原码,反码,补码的值都为
00000000 00000000 00000000 10000010
3、在强制转换后截取前三个字节补码值变为
补码 : 1 0000010
符号位
反码: 1 0000001
原码: 1 1111110
所以输出为 -126
四、运算符
4.1、算术运算符
注意:
1、当字符变量是字母时在运算时会转换ASCII码表对应的数值计算。
2、字符串在使用+号时,起的是拼接的作用。
3、除法的时候要注意一个问题:整数相除,只能得到整数
关于自增和自减:
public static void main(String[] args) {
int a = 100;
int b = 10;
int c= (a++)+b;//先运算后加
System.out.println(c);//输出为110
}
public static void main(String[] args) {
int a = 100;
int b = 10;
int c= (++a)+b;//先加后运算
System.out.println(c);//输出为111
}
4.2、赋值运算符
= , +=, -=, *=, /=, %=
public static void main(String[] args) {
int a=10;//=的作用是赋值
a+=a;//加a以后赋值
a-=a;//减a以后赋值
a*=a;//乘a以后赋值
a/=a;//除a以后赋值
a%=a;//对a取余以后赋值
}
4.3、关系运算符
注意:返回值只能为boolean类型,也就是说只能为false或者true。
4.4、逻辑运算符
“&”和“&&”的区别:
&: 左边无论真假,右边都进行运算;
&&:如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
4.5、位运算符
要做位运算,首先要把数据转换为二进制
3的二进制:11
00000000 00000000 00000000 00000011
4的二进制:100
00000000 00000000 00000000 00000100
因为3和4都是整数,所以原反补码都相同不需要转换。
&:有0则0;
3&4=00000000 00000000 00000000 00000000=0
|:有1则1;
3|4=00000000 00000000 00000000 00000111=7
^:相同则0,不同则1;
3^4:00000000 00000000 00000000 00000111=7
~:0变1,1变0;
~3=11111111 11111111 11111111 11111100
补码:11111111 11111111 11111111 11111100
反码:11111111 11111111 11111111 11111011
原码:10000000 00000000 00000000 00000100=-4
public static void main(String[] args) {
int a=3;
int b=4;
System.out.println(a&b);//0
System.out.println(a|b);//7
System.out.println(a^b);//7
System.out.println(~a);//-4
}
注意:
^(位异或)的特点:某一个数据对另一个数据位异或两次数据不变。此特点可以用于交换两个整数变量的值。
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a^b^a);//20
System.out.println(a^b^b);//10
}
练习:交换两个整数变量的值
方式一:
public static void main(String[] args) {
int a=10;
int b=20;
int t=0;
t=a;
a=b;
b=t;
}
方式二:
public static void main(String[] args) {
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
System.out.println(a);//20
System.out.println(b);//10
}
方式三:
public static void main(String[] args) {
int a=10;
int b=20;
a=a+b;
b=a-b;
a=a-b;
}
方式四:
public static void main(String[] args) {
int a=10;
int b=20;
b=(a+b)-(a=b);
}
其他位运算符:
<<:空位补0,被移除的高位丢弃;
>>:被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,最高位补1。
>>>:被移位二进制最高位无论是0或者是1,空缺位都用0补。
4.6、三元运算符
格式
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
例如判断两个数中的最大值:
public static void main(String[] args) {
int a= 10;
int b=20;
int num=a>b?a:b;
System.out.println(num);
}
获取三个整数中的最大值:
public static void main(String[] args) {
int a= 10;
int b=20;
int c=30;
int num=(a>b?a:b)>c?(a>b?a:b):c;
System.out.println(num);
}