java-day12
目录
早上
do-while循环
do-while循环和while循环很类似,知不是do-while需要先执行循环体中的代码,然后再进行条件判断,是否可以进行一下次循环。
格式:
do{
循环代码
}while(条件判断);
//例如:
public void test1(){
int a;
do{
a = (int)(Math.random()*10);
System.out.println("a = "+a);
}while(a!=5);
}
public void test2(){
int result = 0;
int i = 1;
do{
result+=i;
i++;
}while(i<=100);
System.out.println("result = "+result);
}
循环嵌套
在一个循环中,可以嵌套另一个循环。在嵌套的时候,可以同类循环,也可以是不同类循环,例如可以for循环中嵌套for循环,也可以for循环中嵌套while循环,或者while循环中嵌套for循环循环嵌套一般都会是俩层循环,尽量不要超过三层,三层嵌套的情况也不多。
例如:
//输出5个空行
for(int i=0;i<5;i++){
System.out.println();
}
//在同一行,输出10个五角星
for(int i=0;i<10;i++){
System.out.print("☆");
}
//输出5行,每行10个五角星
for(int i=0;i<5;i++){
for(int j=0;j<10;j++){
System.out.print("☆");
}
System.out.println();
}
//通过该代码了解每次循环时,外层循环和内层循环的变量值的变化
for(int i=0;i<5;i++){
for(int j=0;j<10;j++){
System.out.println("外层循环变量i="+i+";内层循环变量j="+j);
}
System.out.println("--------------------------");
}
注意,System.out中的println方法和print方法的区别
println方法最后会自动换行
print方法最后不会自动换行
println方法最后会自动换行 print方法最后不会自动换行
金字塔(正/倒)
下午
break 和 continue关键字
break和continue都可以使用在for循环、while循环、do-while循环,break还可以在switch-case语句中使用
break:退出,结束当前循环或者switch代码
例如:
break
for(int i = 0;i<10;i++){
if(i==5){
System. out. print1n("发现条件为i=5跳出循环");
break;
}
System. out. println("i = "+i);
}
continue
for(int i = 0;i<10;i++){
if(i==5){
System. out. print1n("发现条件为i=5跳过直接进行下一步");
continue;
}
System. out. println("i = "+i);
}
在嵌套循环中使用break 和continue 关键字
for(int i=0;i<3;i++){
for(int j=0;j<5;j++){
System.out.println("i="+i+",j="+j);
if(j==2){
break;
}
}
}
for(int i=0;i<3;i++){
for(int j=0;j<5;j++){
System.out.println("i="+i+",j="+j);
if(j==2){
continue;
}
}
}
注意,默认情况下,在嵌套循环中,break和continue 只能默认当前循环起作用。
注意,如果我们想让break或continue针对某一个指定的循环其作用,那么我们需要使用label标签
例如:
给循环加上label,相当于给循环起了名字,将来通过名字可用来决定使用break或者continue来操作哪一 个指定的循环。
数组
了解数组
数组是一组数据的集合,数组中的每一个数据都称为数组中的元素。
在java中,数组也是对象,数组中的元素可以是任意类型(基本数据类型和引用数据类型),但是同一个数组中,只能存放类型相同(或者兼容)的数据。
java中的引用类型:类类型、接口类型、数组类型
数组类型声明的变量也是引用类型变量,简称引用,这个引用是可以 指向对象的,只不过这个对象是数组对象。
程序入口中的参数就是一个数组类型的
注意,数组对象在内存中,也是比较简单的,它只是一块连续的内存空间,这个连续的内存空间中,就可以存放多个不同的数据。"一块连续的内存空间"
数组类型
数组和类不同,类是需要我们提前把代码写好然后编译成class文件再加载到内存中就可以使用这个类了。
数组是使用当前已经存在的类型然后加上一个中括号,最后组成一个新的数据类型也就是这个数组类型
例如
byte + [] ---> byte []
short + [] ---> short []
int + [] ---> int []
long + [] ---> long []
float + [] ---> float []
double + [] ---> double []
char + [] ---> char []
boolean + [] ---> boolean []
String + [] ---> String []
Action + [] ---> Action [] //接口
int[] + [] ---> int [][] //二维数组
注意,一个数组是用来存放一组数据的,并且要求这一组数据的类型是一样(或者兼容的)
问题:如果我们想存10个int类型数据,需要怎么办?
这个时候,我们就需要一个数组,这个数组中只能存放int类型数据,然后把这个10个数据给存进去。
问题:我们怎么获得一个可以只能存放int类型数据的数组呢?
int + [ ] ---> int [ ]
当然,这个int[ ]只是一个数组类型,并不能存这10个int数据,需要使用这个类型创建出对象之后,把这10个数据存到int[ ]的对象中即可。
数组类型的变量
俩种方式声明一个数组类型的变量:
int[ ] a;
int a[ ];
注意,推荐使用第一种方式来声明
注意,这里的变量a中,存的时候数组对象在内存中的地址值,因为变量a是一个引用类型的变量。 其他一些例子:
String[] str;
Student[ ] stus;
Object[] objs;
long[] arr;
数组对象的长度
数组的长度,指的是一个数组对象中,当前最多可以存放多少个数据。
每一个数组对象,再被创建的数组,都必须明确指定这个数组对象的长度,并且这个长度一旦确定,就不能在修改了。除非创建一个新的,指定新的数组的长度。
创建数组对象的方式
使用new关键字就可以了,类似创建一般的类的对象。
int[ ] a = new int[4];
String[ ]s = new String[2];
Char [ ] c = new Char[0];
获取数组对象的长度
可以使用数组对象中的length属性
int[ ] a = new int[4];
System.out.println(a.length);
基本类型数组和引用类型数组在内存中的区别
int[ ] a = new int[3];
a[0] = 120;
a[1] = 234;
a[2] = 400;
注意:基本类型数据比较简单,所以在数组对象中直接把基本类型数据存到数组中的指定位置就可以了。数组对象中我们可以使用下标(0,1,2,3...)来指定或者取出数据的位置。
Student[ ] s = new Student [2] ;
s[0] = new student();
s[1] = new Student();
注意:因为对象是一种比较复杂的时间u,本身占据的内存空间比较大(和基本类型相比),所以不可能把一个对象直接存放到数组中,我们只是把对象的内存地址值存放到数组中的指定位置,这个指定位置也是通过下标来表明的。
所以对应上面这个代码,s[0]这个从数组中下标为0的位置取出来的数据就是第一个创建的Student对象的内存地址值。
假设Student类中有一个run方法可以调用 s[0] .run(); 或者 Student s1 = s[0]; s1. run() ;
上下俩个代码是一样的效果,只不过下面代码使用了一个中间变量s1而已