Scanner对象(用户交互)
基本语法:
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextline()方法获取输入的字符串,再读取我们一般需要使用hasNext()与hasNextline()判断是否还有输入的数据
? 一定要读取到有效的字符后才可以结束输入。
? 对输入有效字符串之前遇到的空白,next()方法会自动将其去掉
? 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
? next()不能得到带有空格的字符串
? 以Enter为结束符,也就是说,nextLine()方法返回的是输入回车之前的所有的字符
? 可以获得空白
选择结构
if单选择结构
很多时候我们需要去判断一个东西是否可行,然后我们再去执行,这样一个程序用if语句来表示
语法
if (布尔表达式){
}
if双选择结构
语法
if (布尔表达式){
}else{
}
if多选择结构
语法
if (布尔表达式 1){
}else if(布尔表达式 2){
}else if(布尔表达式 3){
}else{
}
switch多选择结构
多选择结构还有一个实现方式就是Switch case语句
Switch case语句判断一个变量与一系列值中的某一个值是否相等,每个值称为一个分支
Switch语句中的变量可以是:
- byte,short,int,char
- Switch 支持字符串String类型了
- 同时,case标签必须为字符串常量或者字面量
- 语法
switch(expression){
case value :
break;
case value:
break;
default:
}
IDEA反编译(看源码)
- 先在project structure中找到路径打开复制
- 再打开open in explorer中对应的文件位置,粘贴刚刚复制的,返回刚刚的IDEA即可看到01文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NJtQFnDD-1632315613723)(C:\Users\Administrator.SC-201906191125\AppData\Roaming\Typora\typora-user-images\image-20210922092535089.png)]
循环结构
while循环
结构
while(布尔表达式){
}
- 只要布尔值为True,循环就会一直执行下去
- 我们需要一个让表达式失效的方式来结束循环
do while循环
do{
}while(布尔表达式);
while与do while的区别
- while先判断后执行,do while是先执行后判断
- do while至少被执行一次
for循环
- for循环语句是支持迭代的一种通用结构,是最有效的,最灵活的循环结构
- for循环执行的次数是执行前就确定的,格式如下:
for(初始化;布尔表达式,更新){
}
***100.for
for(;;;)
注意
print 输出完不会换行
println输出完会换行
增强for循环
- 这里先了解,之后数组会重点使用,
- java5引入了一种主要用于数组或集合的增强型for循环
- 格式
for(声明语句:表达式)
{
//代码句子
}
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等
- 表达式;表达式是要访问数组名,或者是返回值为数组的方法
方法
什么是方法
我直接把方法理解成函数
组成
方法包含一个方法头和方法体
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
方法调用
- 调用方法:对象名.方法名(实参列表)
- java支持两种调用方法的方式,根据方法上是否返回值来选择。
- 当方法返回一个值时,方法调用通常被当做一个值。例如:
int larger = max(30,40);
- 如果方法返回值是void,方法调用的一定是一条语句
System.out.println("Hello,xiatian");
java是值传递
方法的重载
重载就是在一个类中,有相同的函数名称,但是形参不同的函数。
方法重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
- 方法的返回值类型可以相同也可以不同
- 仅仅返回值类型不同不足以成为方法的重载
命令行传参
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-018Sx3o3-1632315613725)(C:\Users\Administrator.SC-201906191125\AppData\Roaming\Typora\typora-user-images\image-20210922194258427.png)]
可变参数
- jdk1.5开始,java支持传递同类型的可变参数给一个方法
- 在方法的声明中,在指定参数类型后加一个省略号(…)
- 一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数必须在他之前声明
递归
- 递归头:什么时候不调用自身方法,如果没有头,将陷入死循环
- 递归体:什么时候需要调用自身方法
数组
dataType[] arrayRefVar;首选方法
或
dataType arrayRefVar[];
dataType[] arrayRefVar = new dataType[arraySize];
数组的特点
- 其长度是确定的,数组一旦被创建,他的大小不允许被改变
- 其元素必须是相同的类型,不允许出现混合类型
- 数组中元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量
- 数组本身就是对象,java中对象是在堆中的,因此数组中无论保存原始类型还是其他对象类型,数组对象本身是在堆中
- 数组名.Length:获取数组长度
三种初始化
静态初始化
int[] a = {1,2,3,4,5,6};
Man[] mans = {new Man(1,1),new Man(2,2)};
动态初始化
int[] a = new int[10];
a[9]=1;
a[8]=7;
数组默认初始化:
数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例额变量同样的方式被隐式初始化
在堆中**
三种初始化
静态初始化
int[] a = {1,2,3,4,5,6};
Man[] mans = {new Man(1,1),new Man(2,2)};
动态初始化
int[] a = new int[10];
a[9]=1;
a[8]=7;
数组默认初始化:
数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例额变量同样的方式被隐式初始化
|