}
但是从形式上我们就可以看出还是有一些不同的
- 条件表达式必须是布尔值,不能像 C 语言一样直接使用一个数值,如
int a = 10;
if(a){
System.out.println(a);
}
这种代码就是错的,条件必须是布尔值
int a = 10;
if(a > 0){
System.out.println(a);
}
这种代码就是正确的
- 代码风格问题,比如我写 C 语言时喜欢把一对大括号并列在行首。但是在 java 中更推荐上述三种形式那样的风格,将 { 放在 if 或 else 同一行
- 还要注意悬垂 else 问题,记住 else 是与 最接近的 if 匹配。如
int a = 2;
if(a>0)
if(a>10)
System.out.println("a > 10");
else
System.out.println(“a > 0 && a <= 10”);
我们要知道,最下面的 else 是与与它最近的 if 匹配的
2.2 switch 语句
Java 中的 switch 语句和 C 语言中的几乎一样,大家如果不太熟悉 switch 以及该章所讲解的一些逻辑结构可以去看看我写的 C语言三大语句注意事项 。但是既然不是完全一样,那哪里有区别呢?
在 Java 中,switch(表达式) 中的表达式是有类型限制的。
它只能使用:整数(只包括 byte、short、int)、字符(char)、字符串(String)、枚举类型
3. 循环结构
3.1 while 循环
舒服,Java 的 while 循环和 C 语言也是极其类似,只有一个小的差异
while (表达式) 中的表达式必须是布尔值
3.2 break
break 的功能是:让最靠近包裹它的整个循环提前结束。这也是和 C 语言是一样的
3.3 continue
continue 的功能是:跳过本次循环,立即进入下次循环。这也是和 C 语言是一样的
3.4 for 循环
Java 中的 for 循环和 C 语言中的也很类似,只有一个差异
for(表达式1;表达式2;表达式3) 中的表达式2是循环的判断条件,要使用布尔值
3.5 do while 循环
Java 中的 do while 循环也是和 C 语言很类似,只有一个差异
while 中的循环条件只能是布尔值
但是一般不推荐使用,因为它至少会执行一次循环,不注意可能会犯错
1. 输出到控制台
- 基本语法
System.out.println(msg); // 输出一个字符串,自带换行
System.out.print(msg); // 输出一个字符串,不带换行
System.out.printf(format,msg); // 格式化输出,括号内内容类似于 C 语言的 printf
- 代码示例
int a = 10;
System.out.println(a); // 输出 a,自带换行
System.out.print(a); // 输出 a,不带换行
System.out.printf(“%d\n”,a); // 格式化输出,括号内内容类似于 C 语言的 printf
- 格式化输出表(随用随查)
| 转换符 | 类型 | 例子 | 输出结果 |
| — | — | — | — |
| d | 十进制整数 | (“%d”,100) | 100 |
| x | 十六进制整数 | (“%x”,100) | 64 |
| o | 八进制整数 | (“%o”,100) | 144 |
| f | 定点浮点数 | (“%f”,100f) | 100.000000 |
| e | 指数浮点数 | (“%e”,100f) | 1.000000e+02 |
| g | 通用浮点数 | (“%g”,100f) | 100.000 |
| a | 十六进制浮点数 | (“%a”,100) | 0x1.9p6 |
| s | 字符串 | (“%s”,100) | 100 |
| c | 字符 | (“%d”,‘1’) | 1 |
| b | 布尔值 | (“%b”,100) | true |
| h | 散列码 | (“%h”,100) | 64 |
| % | 百分号 | (“%.2f%%”,2/7f) | 0.29% |
2. 从键盘输入
- 读入一个字符(不推荐使用)
直接使用
System.in.read()
可以读入一个字符,但是需要搭配异常处理。如果不搭配异常,如下面代码就会编译出错
public static void main(String[] args) {
System.out.print("Enter a char:");
char i = (char)System.in.read();
System.out.println("The char is :" + i);
}
我们需要将鼠标放到 read 上面,再按住
Alt + Enter
键就会出现
再点击第一个或者第二个就不会报错了。这里其实是处理了异常,但是一个简单的读入字符就要这么复杂所以不推荐使用。
- 使用 Scanner 读取字符/字符串/整数/浮点数/布尔值
- 首先需要导入 util 包
import java.util.Scanner;
,在 IDEA 中,其可以通过输入 Scanner 后直接回车快速导入
- 然后再构造一个 Scanner 对象并与”标准输入流“ System.in 关联:
Scanner 对象名 = new Scanner(System.in);
- 再就可以通过 Scanner 类的各种方法实现输入操作了
import java.util.Scanner;
public class TestDemo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt(); //读入一个整数
double b = in.nextDouble(); //读入一个浮点数
boolean c = in.nextBoolean(); //读入一个布尔值
String s = in.next(); //读入一个字符串
}
}
但是要注意,上述读入字符串是按空白符当作分隔符的,故只能读入第一个空格之前的字符。如果想要读取该行的所有字符(包含空格),应该使用
String s = in.nextLine();
但是使用这个方法还是有很大的缺陷,如果这行代码上面还有其他读入的语句,可能这行代码就不会实行。因为上一行的回车可能被它读入,直接这行结束。因此,只能将其放在读入代码的第一个或者在它前面加一个
in.nextLine();
来读取掉之前的回车。
- 我们知道在 C 语言中可以写类似于这样的代码输入多组数据
int a;
while(scanf(“%d”,&a) != EOF)
{
// 内容
}
在 C++ 中我们也可以写类似于这样的代码输入多组数据
int a;
while(cin>>a)
{
// 内容
}
那么在 Java 中怎么做呢?代码如下
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int a = in.nextInt();
// 内容
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
总结
其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。
这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来
目录:
部分内容截图:
分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-jMhQkt6y-1711989327800)]
总结
其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。
这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来
目录:
[外链图片转存中…(img-z2NdHFw7-1711989327801)]
部分内容截图:
[外链图片转存中…(img-fftlQE5M-1711989327801)]
[外链图片转存中…(img-OTZ9tmIu-1711989327802)]