第四章:
4.1数组:
1.数组的创建:
1.数据类型[] 数组名=null;或者 数据类型 数组名 []=null;(数据的声明其实是把数组的名字存在栈内存里面)
2.数组名=new 数据类型[长度];(是堆内存中开辟一个空间,空间大小就是长度)
上面的两个步骤也可以一次完成
数据类型 数组名[]=new 数据类型[长度];
例如: int a []=new int[3];
注意:数组是引用数据类型,a保存不是数组的实体,而是数组堆内存中的参考地址
2.访问数组中的元素:
记住一点数组是通过索引来访问的,索引值是从0开始的
3.数组的静态创建
int a={1,2,3};
4.二位数组的声明与创建
数据类型 数组名[][]=new 数据类型[行的个数][列的个数]
注意:如果能通过一维数组就能解决问题,就坚决不要创建二维数组,因为创建二维数组的消耗远远大于一维数组
4.2方法
1.方法重载
方法名称相同,但是方法的参数或者个数不同
注意:这里没有讲返回值不同也是重载
2.递归
递归操作是一种特殊的调用方式,就是自己调用自己
例如求1+2+3...+100
public class SZJDTest2{
public static int test7(int sum){
if(sum==1)
return 1;
else {
return sum+test7(sum-1);
}
}
public static void main(String[] args) {
System.out.println(SZJDTest2.test7(100));
}
}
结果:
5050
注意:递归调用如果处理不好,容易造成内存的溢出,所以在使用递归时要谨慎
4.3数组的常用方法
1.排序
public void test7(){
int a []={1,6,3,4,2,9,8,0,5,7};
Arrays.sort(a);
for(int i=0;i<10;i++){
System.out.print(a[i]+"\t");
}
}
结果:
0 1 2 3 4 5 6 7 8 9
这里说明一下:数据排序可以自己写,但是我建议没有特殊要求的话,就用java自带的排序哦
2.复制
将一个数组的内容复制给另外一个数组
public void test8(){
int a[]={1,2,3,4,5};
int b[]={22,33,44,55};
String s[]={"a","b","c"};
System.arraycopy(a, 2, b, 2, 2);//参数:原数组,从第几个开始,复制到的数组,从哪里开始,复制几个(长度)
//System.arraycopy(a, 1, s, 2, 3);
for(int i=0 ,len=b.length;i<len;i++){
System.out.print(b[i]+"\t");
}
}
注意:复制的长度不能超过目标数组的长度,复制数组类型必须一致
4.4java的新特性
1.可变参数
public static void fun(int...args){
for(int i=0;i<args.length;i++){
System.out.print(args[i]+"\t");
}
}
public static void main(String[] args) {
System.out.println("不传递参数:");
fun();
System.out.println("");
System.out.println("传递一个:");
fun(1);
System.out.println("");
System.out.println("传递5个:");
fun(1,23,4,5,6);
}
2.foreach输出
为了方便数组的输出
public static void fun(int...args){
for(int i :args){
System.out.print(i+"\t");
}
}
public static void main(String[] args) {
System.out.println("不传递参数:");
fun();
System.out.println("");
System.out.println("传递一个:");
fun(1);
System.out.println("");
System.out.println("传递5个:");
fun(1,23,4,5,6);
}
4.1数组:
1.数组的创建:
1.数据类型[] 数组名=null;或者 数据类型 数组名 []=null;(数据的声明其实是把数组的名字存在栈内存里面)
2.数组名=new 数据类型[长度];(是堆内存中开辟一个空间,空间大小就是长度)
上面的两个步骤也可以一次完成
数据类型 数组名[]=new 数据类型[长度];
例如: int a []=new int[3];
注意:数组是引用数据类型,a保存不是数组的实体,而是数组堆内存中的参考地址
2.访问数组中的元素:
记住一点数组是通过索引来访问的,索引值是从0开始的
3.数组的静态创建
int a={1,2,3};
4.二位数组的声明与创建
数据类型 数组名[][]=new 数据类型[行的个数][列的个数]
注意:如果能通过一维数组就能解决问题,就坚决不要创建二维数组,因为创建二维数组的消耗远远大于一维数组
4.2方法
1.方法重载
方法名称相同,但是方法的参数或者个数不同
注意:这里没有讲返回值不同也是重载
2.递归
递归操作是一种特殊的调用方式,就是自己调用自己
例如求1+2+3...+100
public class SZJDTest2{
public static int test7(int sum){
if(sum==1)
return 1;
else {
return sum+test7(sum-1);
}
}
public static void main(String[] args) {
System.out.println(SZJDTest2.test7(100));
}
}
结果:
5050
注意:递归调用如果处理不好,容易造成内存的溢出,所以在使用递归时要谨慎
4.3数组的常用方法
1.排序
public void test7(){
int a []={1,6,3,4,2,9,8,0,5,7};
Arrays.sort(a);
for(int i=0;i<10;i++){
System.out.print(a[i]+"\t");
}
}
结果:
0 1 2 3 4 5 6 7 8 9
这里说明一下:数据排序可以自己写,但是我建议没有特殊要求的话,就用java自带的排序哦
2.复制
将一个数组的内容复制给另外一个数组
public void test8(){
int a[]={1,2,3,4,5};
int b[]={22,33,44,55};
String s[]={"a","b","c"};
System.arraycopy(a, 2, b, 2, 2);//参数:原数组,从第几个开始,复制到的数组,从哪里开始,复制几个(长度)
//System.arraycopy(a, 1, s, 2, 3);
for(int i=0 ,len=b.length;i<len;i++){
System.out.print(b[i]+"\t");
}
}
注意:复制的长度不能超过目标数组的长度,复制数组类型必须一致
4.4java的新特性
1.可变参数
public static void fun(int...args){
for(int i=0;i<args.length;i++){
System.out.print(args[i]+"\t");
}
}
public static void main(String[] args) {
System.out.println("不传递参数:");
fun();
System.out.println("");
System.out.println("传递一个:");
fun(1);
System.out.println("");
System.out.println("传递5个:");
fun(1,23,4,5,6);
}
2.foreach输出
为了方便数组的输出
public static void fun(int...args){
for(int i :args){
System.out.print(i+"\t");
}
}
public static void main(String[] args) {
System.out.println("不传递参数:");
fun();
System.out.println("");
System.out.println("传递一个:");
fun(1);
System.out.println("");
System.out.println("传递5个:");
fun(1,23,4,5,6);
}