Java 变量和C语言的区别:
long
在Java中占用8字节,char
占用2字节,byte
类型用于表示1字节大小的整数。- Java中没有与
unsigned
对应的关键字,所有的基本数据类型都是有符号的。 - Java中的
final
关键字与C语言中的const
类似,用于表示不可更改的值。
类型转换:
- 显式类型转换:通过加括号来实现类型转换,例如:
int a = (int) b;
。 - 隐式类型转换:在运算过程中,Java会自动将较小范围的类型转换为较大范围的类型。
字符串与其他类型的相加:
- 当整数与字符串相加时,整数会被自动转换为字符串形式。例如:
java int a = 49; System.out.println(a + "b"); // 输出:49b char c = 49; System.out.println(c + "b"); // 输出:1b
- 浮点数运算注意事项:由于浮点数的精度问题,直接比较两个浮点数是不可靠的。通常使用以下方法判断浮点数是否相等:两浮点数之差的绝对值是否小于一个非常小的值
java if (Math.abs(a - b) < 1e-6) { // 认为a和b相等 }
输入输出:
- Scanner类:
nextLine()
:读取一整行字符串。nextInt()
:读取整数。nextDouble()
:读取双精度浮点数。单精度换成Float即可。-
注意:
Scanner
在处理大规模数据时速度较慢。 -
快速输入输出:对于大数据量,使用
BufferedReader
和BufferedWriter
更加高效:
java import java.io.BufferedReader; import java.io.InputStreamReader; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine();
-
异常处理:在使用
BufferedReader
时,函数需要声明抛出异常:
java public static void main(String[] args) throws Exception { // 代码 }
-
字符串处理:
- 使用
Integer.parseInt(str)
将字符串转为整数,split
方法可以按指定字符将字符串分割为数组:
java String[] arr = str.split("x"); // 按照字符x分割字符串,分割后的字符串数组将不会含有字母x。
- 注意:
split
方法支持正则表达式,以某些特殊字符作为分隔符是需要转义。
Java中的字符串:
- Java中的
String
对象内部已经存储了字符串的长度,因此不需要像C语言那样使用\0
作为字符串的结束符。
格式化输出:
- Java的
printf
与C语言类似,用于格式化输出:
java System.out.printf("%d", num); // 输出整数 System.out.printf("%f", floatingNum); // 输出浮点数
- 注意:没有
lf
的格式说明符,float
和double
都使用%f
。
输出缓冲与性能:
System.out.println
在处理大规模数据时速度较慢。- BufferedWriter 与
OutputStreamWriter
配合使用能显著提高输出性能。 - 在输出完成后调用
flush()
刷新缓冲区,确保所有数据都被输出:
java BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); bw.flush();
- 注意:使用
BufferedWriter
时,函数同样需要声明抛出异常。