目录
24-3-23
一.JAVA基础
1.输出hello world
输出hello world
class HelloWorld{
public static void main(String[] args){
System.out.print("hello"+"\n"+"world");
}
}
2.变量与常量
可以说所有的编程语言中都有变量的概念,在这一关你需要掌握如何在Java中使用变量。
什么是变量呢?
要理解什么是变量,我们可以拿变量和常量做一个对比:
常量: 是一种不会根据环境而改变的数据,例如:光速、圆周率。
变量: 是一种能够根据不同环境产生不同值的数据,例如:你的体重,年龄。
变量和数学中的未知数很类似,例如我们要求某个图形的面积,会设这个图形的面积为 X
。
Java 通过三个元素描述变量:变量名
、变量类型
以及变量值
。通过这三个元素就可以定义一个Java变量。
什么是变量名
,变量类型
,变量值
呢?
可以和计算机的文件做个类比。
- 变量名就像计算机系统中的文件名;
- 变量类型就像是文件类型;
- 变量的值就像是文件中的数据。
接下来我们来定义一个字符串
类型的变量:
public static void main(String[] args){
String hello = "hello world"; //定义字符串类型的 hello 变量 ,并给该变量赋值为 hello codejiaonang
System.out.println(hello)
}
运行结果:
hello codejiaonang
我们使用 String hello = "hello codejiaonang"
定义了一个名为hello
的变量。在这一行代码中,变量名、变量类型和变量值分别是什么呢?
很明显,在这个例子中:
- 变量名为:
hello
- 变量的类型为:
String
- 变量的值为:
hello codejiaonang
=
号表示赋值操作,在这个例子里=
号将右边的值赋予给了左边的hello
变量。
在 Java 中 String 表示字符串类型,你可以把字符串类型理解为文字或者文本类型。
3.数据类型
我们人类能很容易分清楚整数,小数,文字的区别,但是计算机它不能,计算机虽然很强大,不过有时候又比较傻,除非你告诉他,0 1 2
是数字,hello 哈喽
这些是文字,否则计算机是弄不明白它们的区别滴!
其实变量类型就是对常用的各种变量进行了明确的划分,例如,你想让计算机处理整数,那就要告诉它这是整数类型。
在 Java 中最基础的变量类型有哪些呢?
目前来说你只需要掌握以下三种(其他类型以后用到了在学习也不迟):
- 整数类型:
int
,如:1 2 3…; - 浮点数类型(小数):
float
、double
,如:1.2 1.3…; - 字符串类型:
String
,如:hello 王五…。
定义变量的步骤:
在Java中定义变量需要四个步骤。
- 确定变量类型;
- 取变量名;
- 给变量赋初值;
- 别忘了分号结尾哦~
接下来我们可以定义一些不同类型的变量。
定义整形变量:
int age = 50;
long id = 4123456l;
定义浮点型变量:
double score = 95.5;
float score1 = 75.5f;
定义字符串类型数据:
String name = "张三丰";
注意:使用
long
类型定义长整型的时候需要添加单位l
,使用float
类型定义小数的时候需要加上单位f
,定义字符串类型的数据时需要加上英文输入法下的双引号(即半角的双引号)。
4.给变量重新赋值
变量在赋予了初始值之后还可以对原来的值进行修改,这个操作叫做重新赋值。
例如:
int age = 10;
age = age + 90;
System.out.println(age);
执行结果: 100
在上面这段代码的第一行定义了一个 age
变量。并且给它赋值为 18
,第二行代码将 age
变量的值在之前的基础上加 90
,最后输出 age
变量的值.
5.Scanner获取输入的信息:
现在,假设有十个朋友都想让你帮忙计算他们手里的人民币能换成多少越南盾,你该怎么办呢?
按照目前所学内容,每切换一次人民币的数值,都需要重新修改代码。
有十个朋友都想要计算,那咱们就得写十份代码。
如果在程序运行的时候,每个朋友都可以输入他们想要转换的数值,然后你编写的程序能根据他们输入的数值进行运算,是不是就可以解决了?
在 Java 中使用扫描仪(Scanner
)可以从用户那里得到他从键盘输入的数据。
直接来试试吧,编写如下代码:
使用 Scanner 分为两个步骤:
-
第一步导入相关的包:在代码的第一行使用
import java.util.Scanner
; 导入Scanner
; -
第二部创建
Scanner
对象,获取用户从键盘录入的数据。
通过这两个步骤编写代码如下:
import java.util.Scanner; // 在这里导入扫描仪
public class HelloWorld{
public static void main(String[] args){
Scanner sc = new Scanner(System.in); // 定义Scanner 对象
String info = sc.next(); //使用Scanner获取用户输入的数据
System.out.println("输入的数据为:" + info);
}
}
接下来,运行这段程序:
这个时候你会发现,程序卡住了,仅仅只显示了一个光标。
这是正常的,现在程序是在等待你输入数据,如果这个时候你从键盘上输入 5432
,然后按下回车键,会发现屏幕上打印了结果:
这样就完成了一个与用户交互的程序,我们获取到了用户从键盘输入的数据,这样程序就可以根据输入的数据来做相应的处理啦!
获取输入的信息
接下来请你使用两次Scanner
的 next()
方法获取输入的信息,然后将获取的信息输出。
样例1:
输入:
www.codejiaonang.com
2020
输出:
www.codejiaonang.com
2020
注意:平台会通过输入参数自动录入信息而不用你从键盘输入。
有了 Scanner
之后,是不是可以开发出一个不论有多少人,只要输入相应数值就能计算人民币兑换越南盾的程序了呢?
编写程序:
编写程序,我们会发现一个问题:int rmb = sc.next()
这行代码报错了,
为什么会报错呢?
其实这是因为 sc.next()
获取到的是一个字符串类型的数据,而我们用一个整数类型来接收一个字符串类型的数据是会报错的。
一起来回顾什么是字符串,字符串类型是 Java 中用来表示文本数据的数据类型,例如:
hello123
、zhangsan
、王五
这些都是字符串。
知道了原因,解决办法很简单,即将 sc.next()
改为用 sc.nextInt()
来接收整数类型数据就可以啦。
6.while循环
请问编写代码计算从 1 加到 100 的和。
要解决这个问题,你会不会这样编写代码?
System.out.println(1+2+3+4+5+......+100);
如果真这样写,那就太辛苦了!
Java 中的循环可以帮你解决这个问题。
周而复始地做同样的事情,被称为循环(looping)。
while 循环
在编程中经常会使用 while
语句来处理重复的工作, while
你可以理解为“当”的意思,接下来我们看看 while
循环如何使用:
while(条件){
<条件成立执行的代码>
}
while
语句后加上一个条件,当这个条件成立,就会执行 while
循环中的代码,如果条件一直成立,则代码会一直执行下去,这样就形成了一个周而复始的过程。
来看个循环的示例:
public class HelloWorld{
public static void main(String[] args) {
int i = 1;
while(i <= 6){
System.out.println("做了 " + i + " 个俯卧撑");
}
}
}
运行结果:
做了 1 个俯卧撑
做了 1 个俯卧撑
做了 1 个俯卧撑
做了 1 个俯卧撑
做了 1 个俯卧撑
--- 以下省略 ---
Copy
如果你真的运行了代码,你会发现你的程序一直在运行,根本停不下来,这个在编程中称为无限循环(也叫死循环)。
但是这是什么原因呢?为什么停不下来?
或许你已经看出来了。
7.嵌套循环
让我来猜猜上一关中你尝试了什么代码来实现:
public static void main(String[] args){
int i = 1;
while (i<=3){
System.out.print("* ");
i = i + 1;
}
System.out.println(); // 输出空行
i = 1;
while (i<=3){
System.out.print("* ");
i = i + 1;
}
System.out.println(); // 输出空行
i = 1;
while (i<=3){
System.out.print("* ");
i = i + 1;
}
}
Copy
结果:
* * *
* * *
* * *
不知道我有没有猜对?
确实这段代码能通过上一关,但是现在如果要你打印一个 100 * 100
的正方形呢?难道要复制100遍吗?
这样编写代码就显得比较菜了,我们是不是可以使用循环将上面的代码整合起来呢?
既然问了,就肯定可以,这个在编程中被称为嵌套循环。
嵌套循环
循环嵌套就是在一个循环体里嵌入另一个循环,就像俄罗斯套娃一样。
俄罗斯套娃,哦不,嵌套循环的基本格式是:
while(条件1){
<外层循环执行的语句>
while(条件2){
<内层循环执行的语句>
}
}
Copy
为了更好的理解,你其实可以把内部循环看做是一个整体,它就和之前学习的循环没什么两样了:
8.for循环
Java 中还有一种方式能实现循环的功能,并且有时候用起来比 while
循环还要简单,这种循环叫做 for
循环。
接下来我们尝试一下 for
循环。
for (int looper = 1; looper <= 5 ; looper++){
System.out.println("做了" + looper + "个俯卧撑");
}
Copy
运行结果:
做了1个俯卧撑
做了2个俯卧撑
做了3个俯卧撑
做了4个俯卧撑
做了5个俯卧撑
for
循环是不是很简洁呢,这段代码的含义可以用一张图来总结:
- for 循环可以拆分成三段代码:
int looper = 1;
、looper <= 5
、looper++
; - 首先
int looper = 1
定义了一个名为looper
的变量; looper <= 5
设置了 for 循环成立的条件,如果不成立就会结束这个循环;looper++
是looper = looper + 1
的简写形式,这里代表每次结束循环给looper
的值+1
。
通过这个例子我们可以将 for 循环的使用方式可以总结如下:
for( 初始化语句 ; 条件 ; 控制循环次数 ){
<若干行代码>
}
注意:for 循环的括号中的
;
不要忘记了哦~
9.if判断语句
生活中,我们经常需要先做判断,然后才决定是否要做某件事情,比如说你妈妈告诉你,这次考试如果考了 100 分,就给你买一台最新款手机。
对于这种“需要先判断条件,条件满足后才执行的情况”,就可以使用 if
条件语句实现。
if 判断语句
在 Java 中使用 if
语句的方式如下:
if(条件){
<条件为真执行的语句>
}
例如:
int score = 100;
if (score == 100){
print("奖励价值19999元的口头表扬一次")
}
运行结果:
奖励价值19999元的口头表扬一次
10.关系运算符
不知道你有没有注意到,在判断score
是否等于 100
时,使用的不是一个 “=” 号,而是 “==” 号。
你可能会怀疑是不是写错了,其实这两个符号在 Java 中都是存在的,只是它们的含义不同,前者( = 号)是赋值操作,后者( == 号)在做测试(是否相等,对还是错),所以 Java 使用了两种不同的符号。
要测试两个数据是否相等,需要使用双等号(==
),例如:
System.out.println(3 == 5); // 双等号(==)用来测试两者的关系
System.out.println(5 == 5);
输出结果:
false
true
作为过来人,偷偷告诉你:混淆
=
号 和==
号,是很多萌新容易犯的错误哦!
在这里 ==
号被叫做比较操作符(也叫作关系运算符),比较操作符会得出一个结果,这个结果只有固定的两个值: true
和 false
,即真和假的意思。
在 Java 中关系运算符的作用是测试两边值的关系,和数学中差不多。
有时候学习就是掌握规律记特殊,Java 中的关系运算符基本和数学中一致,不过有两点和数学中不同的需要你记住:
- 数学中使用
=
号表示相等,Java 中使用==
号。 - 数学中使用
≠
号表示不等于, Java 中使用!=
表示不等于。
11.Switch语句
在 Java 中有一种更简洁的判断语句的方式——Switch语句。
如果说我们前面学习的if...else
可以比作判断题的话,那接下来要掌握的switch
语句就可以看做是选择题。例如,根据输入的选项决定中午吃什么,选1
,吃黄焖鸡米饭,选2
,吃牛肉盖饭,选3
,吃螺蛳粉,选其他(default
)就不吃。
int input = 3;
switch (input) {
case 1:
System.out.println("吃黄焖鸡米饭");
break;
case 2:
System.out.println("吃牛肉盖饭");
break;
case 3:
System.out.println("吃螺蛳粉");
break;
default:
System.out.println("不吃");
break;
}
在上述案例中,input
就像我们在做选择题时填的答案,case
后面的值相当于选项
,一个case
代表一种情况。
语法:
switch(表达式){
case 常量1:
<若干语句1>
break;
case 常量2:
<若干语句2>
break;
......
default:
<不满足上述所有情况执行的代码>
break;
}
执行过程:当switch
后表达式的值和case
语句后的值相同时,从该位置开始向下执行,直到遇到break
语句或者switch
语句块结束(即遇见”}”结束);如果没有匹配的case
语句则执行default
块的代码。
告诉你几个小秘密:
-
switch
后面小括号中表达式的值必须是整型或字符型(在Java1.8
版本之后字符串类型也可以作为表达式的值); -
case
后面的值可以是常量数值,如1
、2
;也可以是一个常量表达式,如2+2
;但不能是变量或带有变量的表达式,如a * 2
; -
default
可以出现在任意位置,也可以省略。