基础学习
注释
单行注释: // 注释内容
多行注释:/* 注释内容 */
文档注释:/** 注释内容 */
关键字
被java赋予特定含义的单词,字母全部小写
常量
运行过程中,其值不可改变的量
分类
- 字符串常量:用双引号括起来的
- 整数常量
- 小数常量
- 字符常量:用单引号括起来的
- 布尔常量
- 空常量:空值,值是 null,不能被直接输出的
数据类型
基础数据类型
- 数值型:整数(byte/short/int/long;默认:int)、浮点数(float/double;默认:double)、字符(char)
- 非数值型:布尔(boolean)
引用数据类型
类(class)、接口(interface)、数组([ ])
变量
在运行过程中,其值可以发生改变
定义格式:数据类型 变量名 = 变量值
变量使用:取值- 变量名; 修改值- 变量名 = 变量值
注意事项
-
变量不能重名
-
变量不给值不能使用
-
变量定义不能超出取值范围
-
整数定义默认int,为防止long类型定义数值过大报错,可以在数值后面加上L;
浮点数定义默认double,为防止float类型定义不兼容,可以在数值后面加上F;
long i = 1000000000 (报错) long i = 1000000000L (编译成功) float f = 13.14(报错) float f = 13.14F(编程成功)
标识符
定义规则
- 由数字、字母、下划线(_)和美元符($)组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
类型转换
自动类型转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
强制类型转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
格式:目标数据类型 变量名 = (目标数据类型)值/变量
int与string互相转换
🌰:
public class IntegerDemo {
public static void main(String[] args){
// 将int转为String
int number = 100;
// 方法一:
String s1 = "" + number;
// 方法二:String.valueOf(可以有很多种类型)
String s2 = String.valueOf(number);
// 将Stirng 转为int
// 方法一:从String 到 Integer 到 int
String s = "100";
Integer i = Integer.valueOf(s);
int x = i.intValue();
// 方法二:
int y = Integer.parseInt(s);
}
}
装箱和拆箱
装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为对应的基本数据类型
运算
运算符:
算数运算符
+(加);-(减);*(乘);/(除);%(取余)
整数相除只能得到整数,想要得到小数,必须是浮点数
-
字符的 +:
-
拿字符在计算机底层的对应数值进行计算
-
表达式中包含多个基本数据类型的值时,整个表达式的类型会自动进行提升
- byte、short、char会被提升到int
- 等级顺序:byte、short、char -> int -> long -> float -> double
-
-
字符串的 +:+表示为字符串连接符,而不是算数运算
赋值运算符
=(赋值 );+=(加后赋值);-=(减后赋值);*=(乘后赋值);/=(除后赋值);%=(取余后赋值)
除了 =,其他赋值运算符隐含了强制类型转换
自增自减运算符
++:自增,变量值加1
--:自减,变量值减1
单独使用时,放在变量前后效果一样;
参与操作时,放在变量前面,先拿变量做++/--,后拿变量参与操作;放在变量后面,先拿变量参与操作,后拿变量做++/--
关系运算符
==(相等);!=(不相等);>(大于);>=(大于等于);<(小于);<=(小于等于)
逻辑运算符
用来连接关系表达式的运算符;也可以直接连接布尔类型的常量或者变量
&(逻辑与):都为true则为true,否则为false
|(逻辑或):都是false则为false,否则为true
^(逻辑异或):结果不同为true,相同为false
!(逻辑非):结果取反
短路逻辑运算符
&&(短路与):结果同上,但有短路效果,左边为假则右边不执行
||(短路或):结果同上,但有短路效果,左边为真则右边不执行
三元运算符
格式:关系运算式 ? 表达式一 : 表达式二
结果为true,取表达式一;结果为false,取表达式二
数据输入
Scanner使用
-
导包:写在类前面
import java.util.Scanner -
创建对象
Scanner sc = new Scanner(System.in) -
接受数据
int x = sc.nextInt();
流程控制
顺序结构
程序中最基础的流程控制,按照代码先后顺序,依次执行
if语句
基础:
if (关系表达式){
语句体;
}
if…else…
if (关系表达式一){
语句体一;
} else {
语句体二;
}
if…else if…else
if (关系表达式一){
语句体一;
} else if(关系表达式二) {
语句体二;
} else {
语句体三;
}
switch语句
switch(表达式) {
case 值1:
语句体1;
break;
……
default:
语句体n+1;
[break]
}
循环语句
组成:初始化语句、条件判断语句、循环体语句、条件控制语句
for循环
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
增强for循环
for (元素数据类型 变量名 : 数组或Collection集合) {
...
}
🌰:
int[] arr = {1,2,3,4,5}
for (int i: arr) {
// i = 1/2/3/4/5
}
while循环
[初始化语句]
while(条件判断语句) {
循环体语句;
[条件控制语句]
}
do…while循环
[初始化语句]
do {
循环体语句;
[条件控制语句];
} while(条件判断语句);
1、执行初始化语句
2、执行循环体语句
3、执行条件控制语句
4、执行条件判断语句,true继续执行,false循环结束
三种循环的区别
- for和 while 先判断条件是否成立再决定执行循环体与否
- do…while先执行一次再判断条件是否成立,是否继续执行循环体
for和while的区别:
- 条件语句控制的自增变量,在for循环结束后,不会再次被访问到;但对于while循环,循环结束后,该变量还可以继续使用
跳转控制语句
- continue: 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次执行
- break:用在循环中,基于条件控制,终止循环体内容的执行,结束当前整个循环
循环嵌套
Random
作用:用于产生一个随机数
1、导包
import java.util.Random;
2、创建对象
Random r = new Random();
3、获取随机数
int number = r.nextInt(10) // 获取数据范围:[0, 10)