Java的基本程序设计结构
Java数据类型
8种数据类型
4种整型
- int
- short
- long
- byte
2种浮点型
- float
- double
public class cat {
public static void main(String[] args) {
System.out.println(2.0-1.1);
}
}//结果为0.899999999
浮点值采用二进制表示,二进制系统中无法精确地表示分数1/10
1种字符类型
- char
"A"是包含一个字符的字符串
'A’是编码值为65的字符常量
- 特殊字符的转义序列
当心注释中的 \u ,会产生语法错误
boolean类型
- false
- true
整型值与布尔类型之间不能相互转换
变量与常量
声明变量
-
字母、数字、货币符号、标点连接符组成,第一个字符不能是数字。不能使用关键字。
-
大小写敏感。
-
不建议在同一行声明多个变量。
初始化变量
- 尽可能靠近第一次使用这个变量的地方。
常量
-
习惯上常量名使用全大写。
-
可以用final这个关键字指示常量。
-
类常量:一个常量在类中多个方法中使用,可以用static final 设置一个类常量。定义在main方法之外。如果被声明为public,其他类的方法也可以使用这个常量。类名.常量名如:Constants2.CM_PER-INCH
枚举类型
enum Size{S,M,L};
Size.s = Size.M;//声明这种类型的变量
运算符
算数运算符
- +、-、*、/
数学函数与常量
import sataic java.lang.Math.*;//Math类
数值类型之间的转换
- int、long转为float会有精度损失
- long转为double会有精度损失
- int转为double不会有精度损失
强制类型转换
double x = 9.997;
int nx = (int) x;
赋值
条件运算符
x < y ? x : y;//条件为真,计算第一个表达式,为假计算第二个表达式
switch表达式
String seasonName = switch(seasonCode){
case 0 -> "Spring";
case 1 -> "Summer";
case 2 -> "Autumn";
case 3 -> "Winter";
default -> "000";
};
字符串
拼接
- 当一个字符串与非字符串拼接,后者会转换成字符串
字符串不可变
- String 类没有提供任何方法来修改字符串的某个字符
- String类对称为是不可变的(immutable)
检测字符串是否相等
s.equals(t);//相等返回true,不相等返回false
空串与NULL串
- 空串"",是长度为0的字符串
- null表示目前没有任何对象与该变量关联
码点与代码单元
输入与输出
读取输入
- 构造与“标准输入流”System.in 关联的Scanner对象
Scanner in = new Scanner(System.in);
String name = in.nextLine();
import java.util.*
Scanner(InputStream in)//用给定的输入流构造一个Scanner对象
String nextLine();//读取下一行
String nuet();//读取输入的下一个单词
文件输入与输出
- 要读取一个文件,需要构造一个Scanner对象
Scanner in = new Scanner(Path.of("myflie.txt"),StandardCharsets.UTF_8);
- 要写入一个对象,需要构造一个PrintWriter对象,提供文件名和字符编码
PrintWriter out = new PrintWriter("myfile.txt",StandardCharsets.UTF_8);控制流程
控制流程
条件语句
- if(condition){statement}
- if(condition){statement}else{statement}
while循环
- while(condition){statement} while语句在最前面检测循环条件,循环体可能一次都不执行
- do {}while() 先执行一次再检查循环条件
确定性循环
for(int i = 1;i <= 10;i++)//初始化;循环条件;计数器更新{
System.out.println(i);
}
switch语句:多重选择
中断控制流程的语句
数组
int[] a = new int [100];
for each循环
- 循环变量会遍历数组中每一个元素而不是索引值