第四天的学习
Day04
scanner对象
之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样个工具类,我们可以获取用户的输入。java.util.Scanner是 Java5的新特征,我们可以通过Scanner类来获取用户的输入。
基本上属于跟C++的cin<<相同了
-
基本语法:
Scanner s = new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext() 与hasNextLine()判断是否还有输入的数据。
next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
流程控制(都会简单 跳过了)
顺序结构 选择结构 循环结构
- if 选择
- switch选择
switch(expression){
case value ://语句
break; //可选
case value ://语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
switch语句中的变量类型可以是:
◆byte. short, int 或者char.
◆从JavaSE7开始:switch支持字符串String类型了
◆同时case标签必须为字符串常量或字面量。
具体的string类型的数据如何运行运用在代码结构里找到输出路径 找到反编译文件xxx.class 可以用拷贝进idea打开 看到是用哈希值来进行编译
反编译java--class (字节码文件)
- for循环(print输出不换行 println 输出后自动换行)
//增强for循环
int[] numbers = {10,20,30, 40,50}; //定义了一个数组
//遍历数组的元素
for (int x:numbers){
System. out . println(x);
}
-
while 循环
-
do while
-
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。
(break语句也在switch语句中使用)
-
continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
-
关于goto关键字
- goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一 个保留字,但并未在语言中得到正式使用; Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影 子——带标签的break和continue.
- “标签”是指后面跟-个冒号的标识符,例如: label:
- 对Java来说唯一 用到标签的地方是在循环语句之前。 而在循环之前设置标签的唯-理由是:我们希望在其中嵌套另个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
方法
Java方法是语句的集合,它们在-起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
- 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
递归
- A方法调用B方法,我们很容易理解!
- 递归就是:A方法调用A方法!就是自己调用自己利用递归可以用简单的程序来解决一些复方6含带署uA-国1E-4是大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:
-
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
-
递归体:什么时候需要调用自身方法。
数组(跳过学习)
- 数组是相同类型数据的有序集合.
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
- 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.
数组的声明创建
首先必须声明数组变量,才能在程序中使用数组。
下面是声明数组变量的语法:
dataType[ ] arrayRefVar;//首选的方法或
dataType arrayRefVar[]; //效果相同,但不是首选方法
Java语言使用new操作符来创建数组,语法如下:
dataType[ ] arrayRefVar = new dataType[arraySize];
数组的元素是通过索引访问的,数组索引从0开始。
获取数组长度:
arrays.length
内存分析
- 堆
- 栈
- 方法区
静态初始化
int[] a = {1,2,3};
Man[] mans = {new Man(1,1), new Man(2,2)};
动态初始化
int[] a = new int[2];
a[0]=1;
a[1]=2;
数组的默认初始化:
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
数组的基本特点
- 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
- 其元素必须是相同类型,不允许出现混合类型。
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
- 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型数组对象本身是在堆中的。
数组的应用
For each 循环
数组名.for+tab 既遍历数组