-
java.util.Scanner是 Java5 的新特征,我们可以通过Scanner类来获取用户的输入.
-
Scanner s = new Scanner(System.in);
-
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前一般要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据
next()
-
一定要读取到有效的字符后才可以结束输入
-
对输入有效字符之前遇到的空白,next()方法会自动将其去掉
-
只有输入有效的字符后才将其后面输入的空白作为分隔符或者结束符
-
next()不能得到带有空格的字符串
nextLine()
-
以Enter为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符.
-
可以获得空白
Switch选择结构
-
看源码
-
case穿透
-
反编译 反编译工具
Switch语句中的变量类型可以是:
- byte short int char
- 从JAVA SE 7 开始 switch 支持String类型了
- 同时 case 标签必须为字符串常量或字面量
先执行后循环 总是能保证循环体至少执行一次
while(){} 先循环后执行
for循环-
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构
-
for循环执行的次数是在执行前就确定的
-
java 5 引入了一种主要用于数组或集合的增强型for循环
-
**声明语句:**声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语句块,其值与此时数组元素的值相等
-
**表达式:**表达式是要访问的数组名,或者是返回值为数组的方法
打印三角形
Java方法是语句的集合,他们在一起执行一个功能
-
方法是解决一类问题的步骤的有序组合
-
方法包含于类或对象中
-
方法在程序中被创建,在其他地方被引用
- 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合.设计方法时,最好保持方法的原子性,就是一个方法只完成 1 个功能,这样有利于后期的扩展
-
方法包含一个方法头和一个方法体.
-
**修饰符: **是可选的,告诉编译器如何调用该方法,定义了该方法的访问类型
-
**返回值类型:**方法可能会返回值.returnValueType 是方法返回值的数据类型.有些方法执行所需的操作,但没有返回值.在这种情况下,returnValueType 是关键字 void .
-
方法名: 是方法的实际名称.方法名和参数表共同构成方法签名
-
参数类型: 参数像是一个占位符.当方法被调用时,传递值给参数.这个值被称为实参或变量.参数列表是指方法的参数类型、顺序和参数的个数.参数是可选的,方法可以不包含任何参数.
- **形式参数:**在方法被调用时用于接收外界输入的数据.
- **实参:**调用方法时实际传给方法的数据.
-
**方法体:**方法体包含具体的语句,定义该方法的功能.
-
修饰符 返回值类型 方法名(参数类型 参数名){
…
方法体
…
返回值 return; //return返回结果/终止方法.
}
-
调用方法:对象名.方法名(实参列表)
-
Java支持两种调用方法的方式,根据方法是否返回值来选择.
-
当方法返回一个值的时候,方法调用通常被当做一个值.例如:
int larger = max(30,40);
-
如果方法返回值是 void ,方法调用一定是一条语句
System.out.println("Hello,kuangshen!");
了解值传递 和 引用传递
方法重载-
重载是在一个类中,有相同的函数名称,但形参不同的函数.
-
方法的重载规则:
- 方法名称必须相同
- **参数列表必须不同(个数不同、或类型不同、或参数排列顺序不同等).**参数类型:shortlongdoublefloatbyteintcharboolean.
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法的重载
-
实现理论:
- 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应得方法,如果匹配失败,则编译器报错.
- IDEA底部 Terminal 点开 输入javac 包的路径
- 在类名上右击在 show in Explorer 中打开 在 路径前 cmd空格打开 回到 src 文件下 输入 java 包名 类名 回车 输入要输入的内容即可
-
JDK1.5开始,JAVA支持传递同类型的可变参数给一个方法
-
在方法声明中,在指定持参数类型后加一个省略号(…).
-
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通的参数必须在它之前声明.
递归就是自己调用自己
-
可以用简单的程序解决复杂的问题,它通常将大型问题层层转化为一个与原问题相似的规模较小的问题来求解.递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.
-
递归结构包含两个部分:
**递归头: **什么时候不调用自身方法.如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法
静态初始化: 创建 + 赋值
动态初始化: 包含默认初始化
数组的默认初始化:
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化.
int 默认值是 0 ; String 类型是 null
数组的特点-
其长度是确定的,数组一旦被创建,它的大小就是不可被改变的.
-
其元素是相同类型,不允许出现混合类型
-
数组中的元素可以是任何数据类型,包括基本类型和引用类型.
-
数组变量属于引用类型,数组也可以看成是对象,数组中的,每个元素相当于该成员的成员变量.数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型数组对象本身是在堆中的.
- 数组是相同数据类型(数据类型可以为任意类型)有序集合
- 数组也是对象.数组元素相当于对象的成员变量
- 数组长度是确定的,不可变的,如果越界,则报:ArrayIndexOutofBounds
JDK1.5 以后,支持没有下标 适合遍历输出数组元素 但是取不到下标
int[] arrays ={1,2,3,4,5};
for(int array: arrays);
System.out.printl(array);
public class ArrayDemo04{
public static void main(String[] args){
int[] arrays= {1,2,3,4,5};
printArray(arrays);
}
public static void printArray(int[] srrays){
for(int i=0;i
Arraays类
- 数组工具类java.ytil.Arrays
- 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数组对象进行一些基本的操作
- 查看JDK帮助文档
- Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用(注意:是**“不用"而不是"不能”**)
- 具有以下常用的功能
- 给数组赋值:通过fill方法
- 对数组排序:通过sort方法,按升序.
- 比较数组:通过equals方法比较数组中元素值是否相等
- 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找操作.
冒泡排序 


