目录
1.安装程序推荐
IDEA
2.第一个Java程序
.class 文件是编译后的Java字节文件,.jar 文件是打包后的发布文件,需将.jar文件在JDK环境中使用。
package test;
public class test {
public static void main(String[] args){
System.out.println("Hello,World!");
}
}
package语句,指定当前文件的代码定义在哪个包中;
包(package)是Java代码的基本组织形式,除了使用package,还可以使用import语句引用其他包中的资源;
class(类)中可以包含很多成员,main()方法 ,是应用执行的入口。
项目结构图:
src下新建test软件包,在test软件包下新建test.java文件
对于使用特殊指令的注释,Javadoc命令可创建HTML文档
3.保留字,标志符,基本数据类型
// final关键字定义的标识符称为常量
final double pi = 3.1415926
整数:
整数以0开头时定义为八进制数,如020表示十进制数16;
整数以0x开头时定义为十六进制数,如0xF表示十进制数15;
整数以0b开头时定义为二进制数,如0b0101表示十进制数5。
public static void main(String[] args){
System.out.println(020);
System.out.println(0xF);
System.out.println(0b0101);
}
注:整数运算的结果依然是整数,如果运算数的类型不一样,则统一转换为取值范围较大的类型,然后进行计算。
位运算:
逻辑位运算
四个位运算:与、或、取反、异或
其中与(&)、或(|)、异或(^)皆为两个二进制数的比较,而取反(~)则对自身每一位进行操作;异或——两个二进制位数据相同时返回0,不同时返回1。
public class test {
public static void main(String[] args){
byte x = 0b00000010;
System.out.println(~x);
}
}
// 输出为 -3
解释:对于x=2的取反为-3,原因:byte类型的数据是由符号的,即最高位是符号位,1/0分别代表负/正。当数据为负数时,其二进制实际上是其绝对的补码形式(即原码按位取反+1),本处逆推可知输出为-3。
位移位运算
三个位移运算:
1. << (左移运算,二进制位向左移动,低位补0),当整数x进行左移n位运算时,就是在执行x*的运算;
思考题:
System.out.println((byte)(0b11000001<<1)); //-126
解释:首先0b11000001左移得到0b110000010,如果是int类型,即为386,由于数据强制转换为byte类型,而byte类型只能保存8位整数,那么为0b10000010,其最高为1,为负数,由上文知识计算为-126。
2. >> (右移运算符,二进制位向右移动,此时,符号位不动,右移空出的高位要补上与符号位相同的数据),当整数x进行右移n位运算时,就是在执行x/的运算 ;
3. >>> (无符号右移运算符,执行此运算时,不考虑符号位,数据整体右移,并在高位补0)
System.out.println((byte)0b11000000>>2); //-16
System.out.println(0b1010>>>1); // 5
浮点数
double类型,可以用d或D后缀,如 98.8d
float类型,可以用f或F后缀,如 99f
boolean类型
相关运算:逻辑与运算(&&),逻辑或运算(||),逻辑取反运算(!)
4.类型转换
4.1 隐式转换
当把一个取值范围小的类型转换为取值范围较大的类型时,可以进行隐式转换。
int x = 100;
long y = x;
4.2 强制转换
将取值范围大的类型转换为取值范围小的范围
long x = 100;
int y = x;
注:进行类型的强制转换时,如果数据超出了目标类型的取值范围,会进行截断操作,数据内容也会改变,实际开发应该避免。例如。浮点数转为整数,会丢失小数部分。
5.枚举类型
输入固定数据,防止输入意外和意外赋值,采取枚举类型的方法,需要在方法的外部定义其他类型。另外,枚举类型中,每个成员都会有一个整数索引值;当在枚举类型和整数类型之间进行转换时,实际上就是在成员索引值和成员名称之间进行转换。
//性别枚举类型
enum Esex { unknow,male,female};
public static void main(String[] args){
Esex sex = Esex.male;
System.out.println(sex.ordinal()); // 1——枚举成员的索引值
System.out.println(Esex.values()[2]); // female
}