JAVA ----week4
week4( ch7 ch8)
插一个debug的快捷键:
F5 一步步深入(进入每个方法)
F6一步步进行 (不进入方法)
F7如果当前进入某个方法可以直接跳到结尾
F8运行下一个断点
java 数组
数组声明与创建:
1.声明 double[] a;(normal)/double a[];
(未分配空间),但是基本的数据类型在声明时会分配内存, 只是一个对数组的引用的存储位置,默认为null(指针的空间而已吧),实际是没有创建数组的
2.创建 a=new double[10];
实际做了两步:创建了一个数组,把新的数组引用赋值给a
3.声明创建赋值在一起 double[] a=new double[10];
数组长度直接用a.length显示
double[] a=new double[10];
for (int i = 0; i < a.length; i++) {
a[i]=Math.random()*10;
}
System.out.println((int)a[5]);
}
4.初始化 double[] a={1,2,3}; (声明 创建 初始化)
5. 一维数组:长度(定长,不定长),
double[] a=new double[10];
for (int i = 0; i < a.length; i++) {
a[i]=Math.random()*10;
}
System.out.println((int)a[5]);
}
4.初始化 double[] a={1,2,3}; (声明 创建 初始化)
5. 一维数组:长度(定长,不定长),
一般不能不定长,要用其他未学到的方法
Vector v = new Vector(0,1);
for(int i=0;i<10;i++)
v.addElement( (new Integer(i)).toString());
v.addElement("10");
System.out.printLn((String)v.elementAt(5));
二维数组:
int a=new int[][]{ {1,2} {2,2,2} {3,2,1,2} }
可以不是矩形(行不等于列),a,a[0],a[1],a[2]各自有id
如何遍历!!!
多维数组 n维
遍历数组:
1. for 循环访问
2.foreach形式 :不需要数组长度也可以顺序输出数组元素
for(double d:mylist)
{ systemout.println(d); } 表示对数组mylist中的每个元素d进行以下操作,但是不可以操作元素
{if(d>result) result=d;
debug可以直接改变量
for(int i=0;i<10;i++)
v.addElement( (new Integer(i)).toString());
v.addElement("10");
System.out.printLn((String)v.elementAt(5));
二维数组:
int a=new int[][]{ {1,2} {2,2,2} {3,2,1,2} }
可以不是矩形(行不等于列),a,a[0],a[1],a[2]各自有id
如何遍历!!!
多维数组 n维
遍历数组:
1. for 循环访问
2.foreach形式 :不需要数组长度也可以顺序输出数组元素
for(double d:mylist)
{ systemout.println(d); } 表示对数组mylist中的每个元素d进行以下操作,但是不可以操作元素
{if(d>result) result=d;
debug可以直接改变量
处理数据
输入值--初始化
随机数--初始化
显示--数组
数组元素求和
找最大元素
找最大元素下标
随意打乱元素排序
移动元素
找最大元素
找最大元素下标
随意打乱元素排序
移动元素
数组复制----内存空间问题:
1. b=a
实际是b原先指向的空间的内容成为了垃圾废物被java虚拟机回收,b这个指针就指向了a的空间,实际上不是内容的复制(普通数据类型就是)就算两者长度不同也会变得一样,一个变另一个也会变,观察id一样指向同一个地址
1. b=a
实际是b原先指向的空间的内容成为了垃圾废物被java虚拟机回收,b这个指针就指向了a的空间,实际上不是内容的复制(普通数据类型就是)就算两者长度不同也会变得一样,一个变另一个也会变,观察id一样指向同一个地址
2.循环中复制
int[] a={1,2,3};
int[] b=new int[10];
for(int i=0;i<a.length;i++)
b[i]=a[i];
for (int i : b) {
System.out.println(i);
}
int[] a={1,2,3};
int[] b=new int[10];
for(int i=0;i<a.length;i++)
b[i]=a[i];
for (int i : b) {
System.out.println(i);
}
!!!不同数组长度,注意for的那个长度
当a长度大于b没显示出错但是运行时错误(上一个代码)
int[] a={1,2,34,5,6,7,8,21,2,3,4,5};
int[] b=new int[10];
for(int i=0;i<b.length;i++)
b[i]=a[i];
for (int i : b) {
System.out.println(i);
}
int[] b=new int[10];
for(int i=0;i<b.length;i++)
b[i]=a[i];
for (int i : b) {
System.out.println(i);
}
这个就不会错了
3.arraycopy
system.arraycopy(a,1,b,2,4)从a的下标1开始复制4个到b的下标2开始
用for1为i值,2用i来表示,4为i的长度
4. clone
b=a.clone,改变b但是a不变,简单方法得知:id不一样
方法中传递数组
传递数组参数:实际是传id
如果参数个数不匹配会出错
定义函数里的参数时可用 int...a表示任意个数或数组,可以用a.length看见
从方法返回数组
可变长参数列表
arrays类
3.arraycopy
system.arraycopy(a,1,b,2,4)从a的下标1开始复制4个到b的下标2开始
用for1为i值,2用i来表示,4为i的长度
4. clone
b=a.clone,改变b但是a不变,简单方法得知:id不一样
方法中传递数组
传递数组参数:实际是传id
如果参数个数不匹配会出错
定义函数里的参数时可用 int...a表示任意个数或数组,可以用a.length看见
从方法返回数组
可变长参数列表
arrays类
转换类的函数:
1.字符串-》字符数组
String a="eufb";
char[] b=a.toCharArray();
System.out.println(b[2]); f
char c=a.charAt(1);
System.out.println(c); u
System.out.println(a.length()); 4
System.out.println(b.length); 4
char[] b=a.toCharArray();
System.out.println(b[2]); f
char c=a.charAt(1);
System.out.println(c); u
System.out.println(a.length()); 4
System.out.println(b.length); 4
2.字符数组-》字符串
String hard=String.valueOf(b);
System.out.println(hard); eufb
System.out.println(hard); eufb
接受单一个字符:
java的scanner并没有这个方法,只能当作字符串接受
Scanner input=new Scanner(System.in);
String s = input.next(); //Scanner类没有提供直接接收一个字符的方法,这里当作字符串来接收;
System.out.println(s.charAt(0)); // 调用字符串的charAt()方法取得第一个字符就是了
String s = input.next(); //Scanner类没有提供直接接收一个字符的方法,这里当作字符串来接收;
System.out.println(s.charAt(0)); // 调用字符串的charAt()方法取得第一个字符就是了
*/