1、注释
注释分为单行注释、多行注释、和文档注释。
// 单行注释
/*
多行注释
*/
/**
文档注释
*/
2、关键字
java的关键字都是小写,例如public、void、static等。
main不是关键字,但是程序中必须要有main方法。
3、常量
在程序运行中不会发生改变的量叫常量。
常量的分类:
常量类型 | 说明 | 举例 |
---|---|---|
字符串常量 | 用双引号括起来的内容 | “Hello World” |
整数常量 | 所有整数 | 45 |
小数常量 | 所有小数 | 12.2 |
字符常量 | 用单引号括起来的内容 | ‘a’ |
布尔常量 | 布尔值,表示真假 | true false |
空常量 | 一个特殊的值,空值 | 值是:null |
4、变量
变量是内存中的的一块储存空间,在空间中储存着经常发生改变的值。
变量的定义格式:数据类型 变量名 = 值;
注意:
1、变量名不能重复定义。
2、一条语句可以定义多个变量,但需要用逗号分割。
3、变量在使用前必须赋值。
4、定义float变量时,需要在值的后面加上f或者F。定义long变量时,需要在值的后面加上l或者L,但是建议L大写。
5、变量的作用域:只在变量所在的大括号里有用,在定义变量语句之后才能调用。
5、数据类型
Java是一种强类型语言。所以必须为每一个变量声明数据类型。
数据类型 | 关键字 | 内存占用(字节) | 取值范围 |
---|---|---|---|
整型 | byte | 1 | -128~127 |
short | 2 | -32768~32767 | |
int(默认) | 4 | ||
long | 8 | ||
浮点数 | float | 4 | |
double(默认) | 8 | ||
字符值 | char | 2 | 0~65535 |
布尔值 | boolean | 1 | true false |
6、键盘录入
分为三个步骤:
import java.util.Scanner; //1、导入Scanner对象
public class Demo1Scanner {
public static void main(String[] args) {
//2、创建对象
Scanner sc = new Scanner(System.in);
//3、定义变量接收输入
int a = sc.nextInt();
System.out.println(a);
}
}
7、标识符
是有字母,数字,下划线,美元符号组成,并且数字不能是开头。
命名规则:
1、小驼峰命名法:用于变量和方法
(1)在一个单词的时候首字母小写:student
(2)在多个单词的时候首字母小写,后面的单词首字母全部大写:funnyMan
2、大驼峰命名法:用于类
(1)在一个单词的时候首字母大写:Student
(2)在多个单词的时候所有的首字母都大写:FunnyMan
8、类型转换
1、隐式类型转换:
数值范围大小:
将数值范围小的数和数值范围大的数进行计算时,会将小的数的类型提升为大的数的类型。
byte、short、char三种在运算时,直接提升为int型进行运算。
2、强制类型转换:
将数值范围大的数或者变量,赋值给数值范围小的数或者变量,会发生精度损失。
格式:目标数据类型 数据名 = (目标数据类型)数据名
范例:int a = (int)88.88
public class Demo1 {
public static void main(String[] args) {
byte a = 3;
byte b = 4;
byte c = (byte)(a + b);
byte d = 3 + 4;
}
}
1、byte在进行运算过程中会自动转化为int类型。
2、但是java中有常量优化功能:会先计算出3+4的结果,并且判断是否在取值范围内,如果在取值范围内,则会编译通过,如果不在取值范围内,就不会编译通过。
9、运算符
1、算数运算符
有+ - * / %。
除法运算时:两个整数相除得到整数,如果想要得到小数,需要有浮点数参与。
2、字符的 + 操作
char类型会被转化为int类型,字母会通过ASCII码表来进行转化为数字。
3、字符串的 + 操作
(1)当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算。
"baidu" + 666
(2)在“+”操作中,如果出现了字符串就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
-
4、综合案例
```java import java.util.Scanner; // 输入一个三位数,输出它的个位、十位、百位 public class case1 { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int num = sc.nextInt();
System.out.println(num + "的百位数是:" + (num / 10 / 10 % 10));
System.out.println(num + "的十位数是:" + (num / 10 % 10));
System.out.println(num + "的个位数是:" + (num % 10));
}
}
<a name="QA1tc"></a>
### 5、自增自减运算符
(1)单独使用时:<br />“++”或者“--”放在变量前面还是后面,效果是一致的。<br />(2)参与操作时:<br />“++”或者“--”在变量前面时候,先进行自增或自减,然后参与操作。<br />“++”或者“--”在变量后面时候,先进行操作,然后进行自增或者自减。
<a name="zNAZY"></a>
### 6、赋值运算符
(1)基础赋值运算符:将“=”右边的值赋值给左边。<br />(2)扩展赋值运算符(+=、-=、*=、/=、%=):将右边的值和左边的值进行(+、-、*、/、%)操作后将赋值给左边。<br />注意:扩展赋值运算符,自带强制数据类型自动转化。
<a name="sJywO"></a>
### 7、关系运算符
有**">","<",">=","<=","==","!="**。返回的结果是true或者flase。
<a name="IHpvM"></a>
### 8、逻辑运算符
作用:连接关系表达式的运算符,也可以直接连接布尔类型的常量或者变量。<br />有"&"与,"|"或,"!"非,"^"异或。<br />"&"与:有假则假,全真则真。<br />"|"或:有真则真,全假则假。<br />"!"非:取反。<br />"^"异或:相同为假,不同为真。
<a name="gUgY8"></a>
### 9、短路逻辑运算符
"&&"与:左边为假则右边不执行,直接输出为假。<br />"||"或:左边为真则右边不执行,直接输出为真。<br />"&"与和"|"或:左右两边的表达式都要执行。
<a name="b19Hq"></a>
### 10、三元运算符
关系表达式 ?表达式1 : 表达式2<br />执行流程:如果关系表达式为真,则输出表达式1的值。<br /> 如果关系表达式为假,则输出表达式2的值。
<a name="FeQoK"></a>
## 10、流程控制
<a name="i6NcY"></a>
### 1、顺序结构
程序从上到下,从左到右依次执行。
<a name="an63J"></a>
### 2、If语句
(1)格式1:
```java
if(关系表达式){
语句体;
}
当关系表达式为真时,执行语句体。否则不执行语句体,继续执行后面的语句内容。
(2)格式2:
if (关系表达式){
语句体1;
}else{
语句体2;
}
当关系表达式为真时,执行语句体1,否则执行语句体2。
(3)格式3:
if (判断条件1){
语句体1;
}else if (判断条件2){
语句体2;
}else if (判断条件3){
语句体3;
}
...
else{
语句体n+1;
}
如果判断条件1为真,则执行语句体1。
如果判断条件2为真,则执行语句体1。
……
如果全部判断条件都为假,则执行语句体n+1。
3、switch语句
格式:
switch (表达式){
case 值1:
语句体;
break;
case 值2:
语句体;
break;
case 值3:
语句体;
break;
.....
default:
语句体n+1;
break;
}
先计算表达式的值,然后将表达式的值和case 后面的值进行比较,如果一样,执行后面的内容,如果所有的case都没有一样的就执行default 后面的语句。
注意:case 后面的值必须是常量,并且不能重复。
案例:
import java.util.Scanner;
public class case3{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入星期几:");
int week = sc.nextInt();
switch (week){
case 1:
System.out.println("跑步");
break;
case 2:
System.out.println("走路");
break;
case 3:
System.out.println("动感单车");
break;
case 4:
System.out.println("爬山");
break;
case 5:
System.out.println("游泳");
break;
case 6:
System.out.println("打羽毛球");
break;
case 7:
System.out.println("吃一顿");
break;
default:
System.out.println("输入有误");
}
}
}
case穿透现象:
在switch语句中,如果case控制的语句体后面不跟break语句,就会出现case穿透现象。
当case穿透现象发生后,后续的case不会具有匹配效果,内部的语句都会执行,直到遇到break语句或者switch语句结束。
应用场景:当发现switch语句中,多个case的语句体重复时,可以考虑使用case穿透现象优化代码。
4、for循环语句
格式:
for (初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
执行流程:
- 执行初始化语句。
- 进行条件判断语句:true,继续执行,false,退出循环。
- 执行循环体语句。
- 执行条件控制语句。
-
5、while循环语句
格式:
初始化语句; while(条件判断语句){ 循环体语句; 条件控制语句; }
执行流程:
执行初始化语句。
- 进行条件判断语句:true,继续执行,false,退出循环。
- 执行循环体语句。
- 执行条件控制语句。
- 执行第2步。
6、do…while循环
格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
- 执行初始化语句。
- 执行循环体语句。
- 执行条件控制语句。
- 进行条件判断语句:true,继续执行,false,退出循环。
- 回到第2步。
7、三种循环的区别
三种循环的区别:
- for循环和while循环先判断条件是否成立,然后决定是否执行循环体。(先判断,后执行)
- do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体。(先执行,后判断)
for和while的区别:
- 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了。
- 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可及继续使用。
三种循环的场景:
while(true){}
do{}while(true);
最常用的是while死循环。
<a name="b2ClD"></a>
### 9、跳转控制语句
- continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行。
- break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前循环。
- break和continue只能跳出、跳过自己所在地那一层关系,如果想要跳出指定的一层可以加入标号。
```java
标号名:while(true){
switch(表达式){
case 1:
break 标号名;
}
}
11、Random的基本使用
作用:产生随机数
1、导包。
2、创建对象。
3、获取随机数。
//导包
import java.util.Random
// 创建对象
Random r = new Random();
//获取随机数
int number = r.nextInt(10);//获取数据范围[0,9),0-9不包括10