Java基础
##循环语句
java中循环语句分为以下几类:
- for
- while
- do…while
- 递归
- 增强for循环(forEach:JDK1.5+)
for循环
for循环是java中最常见的一种循环方式,语法结构如下:
for(初始变量表达式;条件判断;修改初始变量表达式){
//循环体
}
例如
for(int i = 1;i <= 10 ;i++){
System.out.println(i);
}
循环编写时注意条件判断表达式,操作不当将会导致死循环!
while循环
语法:
while(条件判断表达式){
//循环体
}
例如:
int i = 1;
while(i <= 10){
System.out.println(i);
i++;
}
do…while循环
dowhile循环跟while循环的区别在于:前者先执行循环体,然后再做条件判断,而后者是先执行判断然后执行循环体;
语法:
do{
//循环体
}while(条件判断表达式)
例如:
int i = 1;
do{
System.out.println(i);
i++;
}while(i<=10);
continue、break、return关键字使用
continue
一般用于循环语句,当需要循环到某一次时,跳过该次循环
//输出0~10之间所有的奇数
for(int i = 0;i<10;i++){
if(i % 2 == 0){
continue;
}
System.out.println(i);
}
break
break主要用于switch中的case条件,可以防止case穿透;另外,break还可以用于循环语句,在循环中的作用一般表示为结束一层循环(多层嵌套循环时,外层的循环不受影响)
可以通过为多层嵌套循环添加标签,然后使用break,结束指定的标签对应的循环(不推荐)
loop1:for(int j = 10;j<20;j++){ loop2:for(int i = 1;i<10;i++){ if(i % 3 == 0){ break loop1; } System.out.println(j+"==="+i); } }
return
return 一般用于方法中,表示方法的结束,当return被执行是,其后续的代码没有执行的可能性。
###递归(Recursion)
递归指的是在方法内部对方法自身调用;递归一般用于一些常见的算法的解决,在实际应用中,比如对文件夹内部文件的递归检索;以及树形菜单的显示;递归是对循环的一种补充。
//求5!
public int m(int n){
if(n == 1){
return 1;
}else{
return n * m(n - 1);
}
}
//斐波拉契数列
public long fib(long n){
if(n == 1 || n == 2){
return 1;
}else{
return fib(n - 1) + fib(n - 2);
}
}
数组
在java中,数组是一种用于存储一种相同类型数据的数据结构,比如一组整数,一组字符串,甚至是一组对象,数组是一种有序的线性结构;
###数组声明的语法:
数据类型[] 变量名称;
数据类型 变量名称[](不推荐)
int[] i;
boolean[] b;
String[] s;
Student[] stus;
数组的初始化
java中数组的初始化分为两种方式:
- 静态初始化:在声明时直接将数组中的元素定义出来
- 动态初始化:在声明数组时,只为其分配空间,而不赋予元素
//静态初始化
int[] i = {1,1,2,3,5,8,13};
//动态初始化
int[] j = new int[6];
###获取数组中的元素
数组中的每一个元素都有一个索引,该索引从0开始;任何数组都包含一个length属性,用于获取数组中的元素个数
//静态初始化
int[] i = {1,1,2,3,5,8,13};
//取出数组中的元素
System.out.println(i[0]); // 第1个
System.out.println(i[6]); // 第7个
//获取数组中的元素个数
System.out.println(i.length);
数组遍历
//静态初始化
int[] i = {1,1,2,3,5,8,13};
//遍历数组中的元素-for循环
for(int n = 0;n < i.length;n++){
System.out.println(i[n]);
}
//while循环遍历
int index = 0;
while(index < i.length){
System.out.println(i[index]);
index++;
}
//JDK1.5+新增了增强for循环(forEach)
for(int m:i){
System.out.println(m);
}
数组的长度一旦定义,则无法修改
数组拷贝
在实际开发中,由于数组的长度一旦定义无法改变,在应对一些弹性需求时(比如动态数组:长度可变的数组),需要对数组的容量进行扩充,此时,可以通过数组的拷贝来实现;在java中数组的拷贝是通过System类中的arraycopy方法实现,该方法中包含5个参数:
- src:原数组
- srcPos:原数组拷贝的起始位置
- dest:目标数组
- destPos:目标数组中的起始位置
- length:拷贝的元素个数
int[] i = {3,4,5};
int[] j = new int[10];
//数组的拷贝 ArrayList
System.arraycopy(i,0,j,0,i.length);
ArrayList(动态数组)的实现就是使用数组拷贝完成