Java基础day03
接day02----流程控制---3、循环
一、循环
循环 | 语法结构 | 执行逻辑 |
---|---|---|
通用for循环 | for(初始化;条件判断;步长设置){ //循环体 } | 第一次循环:初始化,条件判断,循环体,步长设置 ;第2-n次循环:条件判断,循环体, |
while循环 | while(判断条件){ //循环体 } | 先条件判断再执行循环体 |
do.......while循环 | do{ //循环体 }while(条件判断); | 先执行循环体再执行条件判断 |
举例:
public class Demo1AnLi {
public static void main(String[] args) {
//利用for循环输出1-100
for (int i = 1; i <=100 ; i++) {
System.out.println(i);
}
//求1-100的偶数-----continue
for (int i = 1; i <=100 ; i++) {
if (i%2!=0) {
continue;
}
System.out.println(i);
}
//while循环
// int i=0;
// for (; i <=100 ;) {
// i++;
// if (i%2!=0) {
// continue;
// }
// System.out.println(i);
// }
//
int i=0;
while (i<=100){
i++;
if (i%2!=0) {
continue;
}
System.out.println(i);
}
//do....while
int i=0;
do {
i++;
if (i%2!=0) {
continue;
}
System.out.println(i);
}while (i<=100);
}
}
3.2 continue和break的区别
语句 | 说明 |
---|---|
break | 跳出当前结构体(switch和循环语句) |
continue | 跳出本次循环进入下一次循环 |
案例:1.在控制台打印 五个*在一行
2.在控制台打印等腰三角形
*
* *
* * *
* * * *
* * * * *
分析:
每行的*号个数与行数一致
每行的开头空格数+*号等于5个---不包含*里面空格
3.打印如下三角:
*
* *
* *
* *
* * * * *
public class Demo2exercise {
public static void main(String[] args) {
//在控制台输出 ***** 使用循环
for (int i = 0; i <5 ; i++) {
System.out.print("*");
}
//循环5行五个*
for (int j = 0; j <5 ; j++) {//行
for (int i = 0; i <5 ; i++) {//列
System.out.print("*");
}
System.out.println();
}
//循环等腰三角形
for (int i = 1; i <6 ; i++) {//行
//空格
for (int j = 0; j <(5-i) ; j++) {
System.out.print(" ");
}
for (int k= 1; k <=i ;k++) {//列
System.out.print("* ");
}
System.out.println();
}
//打印空心等腰三角形
for (int i = 1; i <6 ; i++) {//行
//空格
for (int j = 0; j <(5-i) ; j++) {
System.out.print(" ");
}
//分析:只是第2 3 4 行中间空格,1和5都是对的
for (int k= 1; k <=i ;k++) {//列
if (i==1||i==5){
System.out.print("* ");
}else if (i>1&&i<5){
if (k==i||k==1){
System.out.print("* ");
}else {
System.out.print(" ");
}
}
}
System.out.println();
}
}
}
二、数组---Arrray
1、定义
具有相同类型的数据集合
2、如何创建数组:
一维数组 | 格式 | 案例定义一个整型数组22,33,44 |
---|---|---|
数组的每个元素都确定 | type[] arrName={值1,值2,值3......} | int[] arr={22,33,44}; |
以对象的形式创建(元素确定) | type[] arrName=new type[]{值1,值2,值3.....}t | int[] arr=new int[]{22,33,44} |
对存储的值不清楚,但是知个数) | type[] arrName=new type[3] | int[] arr=new int[3] |
二维数组:一堆数组中的每个元素也是一个数组
二维数组 | 格式 | 案例 |
---|---|---|
元素确定 | type[] [] arr={ { 值1-1,值1-2.... },{值2-1,值2-2.....}.....} | int[] [] arr={ {1,2,3},{4,5,6},{7,8} }; |
以对象的形式创建(元素确定) | type[] [] arr=new type[]{值1,值2}; | int[] [] arr1=new int[3] []; arr1[0]=new int[]{0}; |
对存储的值不清楚,但是知个数) | type[] [] arr=new itype[3] [] | int arr1 = new int3; arr1[0] = new int[]{1,2}; arr1[1] = new int[6]; |
访问数组中的元素:数组的下标是从0开始的
数组名[下标]
例如: String[] names=new String[]{"aa","bb","cc"};
访问:
names[1]="bb";
如果访问超出了数组范围的元素,会抛出ArrayIndexOutOfBoundsException----数组下标异常
public class Demo3Array {
public static void main(String[] args) {
// String[] names={"aa","bb","cc"};
// String[] names=new String[]{"aa","bb","cc"};
String[] names=new String[3];
names[0]="aa";
names[1]="bb";
names[2]="cc";
System.out.println(names);//数组的地址
System.out.println(names[0]);//aa
// System.out.println(names[99]);//ArrayIndexOutOfBoundsException :99
}
}
3、如何遍历数组?
在数组对象中有一个属性:arr.length,返回数组元素的个数
for循环:
String[] names=new String[]{"aa","bb","cc"};
for (int i = 0; i < names.length; i++) {
String name = names[i];
System.out.println(name);
}
foreache循环:利用迭代器实现数组的遍历
结构:
for(类型 变量:序列){
//循环体
}
String[] names=new String[]{"aa","bb","cc"};
for (String name: names) {
System.out.print(name);
}
获取最后的元素:
String[] names=new String[]{"aa","bb","cc"};
System.out.println(names[names.length-1]);
4、数组的工具类
Arrays工具类中提供了多种操作数组的方法:
Arrays.toString(定义的数组名) //将数组转成字符串
5、数组的扩容
1) System.arraycoopy() --------将原数组全部复制到一个新的数组
全称: public static native void arraycopy(Object src,int srcPos,Object dest,int destPos, int length)
src:源数组;
srcPos:源数组要复制的起始位置;
dest:目的数组;
destPos:目的数组放置的起始位置;
length:复制的长度.
//扩容
String[] names=new String[]{"aa","bb","cc"};
String[] newNames=new String[5];
System.arraycopy(names,0,newNames,0,names.length);
newNames[3]="dd";
newNames[4]="ee";
System.out.println(Arrays.toString(newNames));
System.out.println("-----------------");
//缩容:
String[] names1=new String[]{"张三","李四","王五","小于"};
String[] names2=new String[2];
System.arraycopy(names1,0,names2,0,2);
System.out.println(Arrays.toString(names2));
说明:
native:本地方法,功能不是由java代码实现。
static :静态成员,可以直接通过类进行访问
练习:利用冒泡排序将数组{12,4,6,2,1},按从小到大排序
import java.util.Arrays;
//利用冒泡排序将数组{12,4,6,2,1},按从小到大排序
public class Demo4exercise {
public static void main(String[] args) {
int[] arr={12,4,6,2,1};
for (int j = 0; j <4 ; j++) {
for (int i = 0; i < arr.length-1; i++) {
if (arr[i]>arr[i+1]){
// 按位与 ^
// arr[i+1]=arr[i]^arr[i+1];
// arr[i]=arr[i]^arr[i+1];
// arr[i+1]=arr[i]^arr[i+1];
int index=arr[i];
arr[i]=arr[i+1];
arr[i+1]=index;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
练习:打印杨辉三角---使用二维数组
import java.util.Arrays;
import java.util.Scanner;
/*杨辉三角*/
public class Demo5exercise {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入打印多少行");
int i = scanner.nextInt();
triangle(i);
}
public static void triangle(int n){
int[][] arr = new int[n][n];
for(int i = 0; i < n; i++ ){
for(int j = 0; j <= i; j++ ){
if (j == 0 || j == i) {
arr[i][j] = 1;
} else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}System.out.print(arr[i][j] + " ");
} System.out.println();
}
}
}
标签:arr,Java,String,day03,int,names,数组,杨辉三角,new
From: https://blog.csdn.net/weixin_62189092/article/details/143184043