前言
声明 : 该篇博客大多内容来自 y总的 讲义
写这篇博客为了更好的从 C + + C++ C++转向为 J a v a Java Java
首先对于刚从 C + + C++ C++转到 J a v a Java Java的选手
我们需要知道的是需要提交的代码格式一般有两类
C++import java.util.* //这里相当于头文件
public class Main {//这里是是大的总体类
public static void main(String[] args) {//这里是主方法
}
}
Leetcode类型class Solution {
public void deleteNode(ListNode node) {//这种类型一般是编写特定的函数,不处理输入输出
}
}
1.变量、运算符、输入与输出
1.1变量
.变量的类型
| 类型 | 字节 | 距离 |
|---|---|---|
| byte | 1 | 123 |
| short | 2 | 12345 |
| int | 4 | 123456789 |
| long | 8 | 1234567891011L(定义+L) |
| float | 4 | 1.2F(定义+F) |
| double | 8 | 1.2 |
| boolean | 1 | true,false |
| char | 2 | ‘A’ |
这里的为什么没有提及String,因为在Java中,String被封装成了一个类
除了定义的时候,需要注意Long/float之外其他与C++无异
1.2 运算符
运算符这里基本都和C++吻合
只是C++可以省略的地方,Java一般不能省略,还有就是1不能代替为true
下面是几个错误示范 :
if(n&1)//×
if((n&1) !=0) //√
if(n%2)//×
while(1)//×
....
当然这种错误IDEA都会有亲切的提示
1.3 输入输出
.普通的输入输出
即使用Scanner
//输入
Scanner sc = new Scanner(System.in);
String str = sc.next(); // 读入下一个字符串
int x = sc.nextInt(); // 读入下一个整数
float y = sc.nextFloat(); // 读入下一个单精度浮点数
double z = sc.nextDouble(); // 读入下一个双精度浮点数
String line = sc.nextLine(); // 读入下一行
//输出
System.out.println(123); // 输出整数 + 换行
System.out.println("Hello World"); // 输出字符串 + 换行
System.out.print(123); // 输出整数
System.out.print("yxc\n"); // 输出字符串
System.out.printf("%04d %.2f\n", 4, 123.456D); // 格式化输出,float与double都用%f输出
.优化的输入输出
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str);
}
}
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello World\n");
bw.flush(); // 需要手动刷新缓冲区
}
}
在 1 0 7 10^7 107的输入输出范围的时候, S c a n n e r Scanner Scanner的效率会比优化后的低个 10 ∣ 20 10|20 10∣20倍