1、for循环
a b c
for(初始化表达式;布尔表达式;递增(或递减)表达式){
d
//循环体
}
执行过程:a为真:a->b->d->c->b->d->c,直到b为假,跳出for循环
for(;;){
}//死循环,与while(true){}等价
char ch = barcoad.charAt(i);//条码在角标为i的字符,该句的作用是从字符串中取相应的字符
2、关于int与char的语句
int c1 = '0'; //c1=48
int c2 = '6'-'0' //c2=6 这句可以将字符型数字转换为整型
int c3 = '6'+'0' //c3=102
3、do-while
{
//循环体--a
}while(布尔表达式);---b
执行过程:从a开始,到布尔表达式处,如果为真,回去执行a,如果为false,执行b后面的内容
4、数组(Array)
1)、数组变量的声明
int[] ary;//声明了数组变量ary,数组变量是代词
int ary[];//兼容C语言的写法,java中不建议使用
关于数组的两个错误形式
int[] arr;
System.out.println(arr[1]);//编译错误。因为arr没有初始化
arr=null;//null:表示空,没有
System.out.println(arr[0]);//运行异常,空指针异常,在null的引用变量上访问属性(成员)方法,引发空指针异常。
2)、数组初始化
int arr;
arr = new int[5];//new int[5]是创建数组对象,有5个数组元素,序号0、1、2、3、4,创建对象必须指定数组大小;
//数组元素自动初始化为”零“值:0,0,0,0,0;\u0000;false;null几种情况,这取决于数组类型
ary = new int[]{4,5,6};//new int[]{4,5,6};和new int[5] 都是动态创建数组对象,是数组对象的动态初始化
int[] ary ={7,8,9};//数组的静态初始化{7,8,9},只能用在声明时候直接初始化数组
int[] ary1;
ary1={4,5};//编译错误,静态初始化不能直接赋值;
3)、访问数组元素
使用运算符[下标],访问(读写)数组元素。所谓下标,就是元素的位置代号,可以称作角标,数组的第一个元素角标为0,以此类推
int i = ary[0];//读取数组中角标为0的数组元素
ary[1] = 10;//将10写入数组中角标为1的位置
数组名.length;//获得数组的长度
数组名(数组名.length-1);//读写数组的最后一个元素
4)、数组的复制
利用JAVA系统API提供的方法高效实现
System.arraycopy();
System.copyOf();//底层是System.arraycopy();
用法:
System.arraycopy(arr1,i,arr2,j,arr1.length);//从arr1数组角标为i的位置开始,复制到arr2数组角标为j的位置,连续复制arr1.length长度个元素
int[] arr2 = Arrays.copyOf(arr1,ary1.length);//将arr1直接复制给arr2,长度为arr.length
另外利用for循环也可以实现数组的复制
int[] ary1 = {4,5,6};
int[] ary2 = new int[ary1.length];
for (int i=0;i<ary1.length;i++ )
{
ary[i]=ary1[i];//将ary1中角标为i的元素赋给ary中角标为i的元素
System.out.println(ary[i];
}
5)、将数组中元素逐个打印出来的方法
用Arrays.toString();//打印出来的格式为[,,,],用该方法要导入包java.util.Arrays;
示例
package day04;
import java.util.Arrays;
public class ArrayCopy
{
public static void main(String[] args)
{
int[] ary1 =[4,5,6];
int[] ary2 = new int[ary1.length];
int[] ary3 =new int[ary1.length+1];
System.arraycopy(ary1,0,ary2,0,ary1.length);
System.arrycopy(ary1,0,ary3,1,ary1.length);
System.out.println(Arrays.toString(ary1));//[4,5,6]
System.out.println(Arrays.toString(ary2));//[4,5,6]
System.out.println(Arrays.toString(ary3));//[0,4,5,6]
int[] ary4 =Arrays.copyOf(ary1,ary1.length);
System.out.println(Arrays.toString(ary4));//[4,5,6]
}
}
6)、数组的扩容
真正的数组对象的长度是不可改变的,利用交换长度不同的数组对象,可以变通的修改数组的容量,利用数组的复制方法,可以保持数组的内容不变
示例
package day04;
import java.util.Arrays;
public class ArrayCopy
{
public static void main(String[] args)
{
int[] ary={1,2,3};
int[] temp=Arrays.copyOf(ary,ary.length+1);//将复制的数组temp长度加1
ary=temp;//等价于ary1=Arrays.copyOf(ary,ary.length+1);
ary[ary.lengrh-1]=8;//改变数组的最后一个元素
System.out.println(Arrays.toString(ary));//[1,2,3,8]
}
}