Java学习之路第二部分
这一部分主要涵盖了数组的内容
一、数组的概述
1.1.与C++的不同之处
①数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括
基本数据类型和引用数据类型。(个人理解,感觉Java中的数组融合了C++的容器,我可以忘里面放任何东西,并且这本身是Java实现的一个类)
②创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是
这块连续空间的首地址。(这里与C++是相似的)
③数组的长度一旦确定,就不能修改。(这个是重点)
二、一维数组的使用
1.声明方式
代码如下(声明):
type var[] 或 type[] var;//其两者都可以
int a[5]; //非法,Java语言中声明数组时不能指定其长度
int[] a1;
String[] c; //引用类型变量数组
2.初始化
初始化分为动态初始化,静态初始化。
动态初始化:数组声明,分配空间,赋值是分开的。
静态初始化:在定义的时候就为数组赋值了。
代码如下(动态初始化):注意三部曲,声明,开拓空间,赋值
int[] arr = new int[3];//这里数组的声明和分配空间
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;
String names[]; //声明
names = new String[3];//开拓空间
names[0] = “钱学森”;//赋值
names[1] = “邓稼先”;
names[2] = “袁隆平”;
代码如下(静态初始化):在开拓空间就必须要赋值了。
int arr[] = new int[]{ 3, 9, 8};//或者
int[] arr = {3,9,8};
String names[] = {
“李四光”,“茅以升”,“华罗庚”
}
3.数组元素的引用
整体上,是与C++上相同的。
但是,数组本身就是一个引用数据类型,其中有
每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长
度(元素个数)
数组一旦初始化,其长度是不可变的
3.数组元素的默认初始化值
二、多维数组的使用
由于多维数组,与C++相差甚远。所以,这里就多用的类似图片。
从数组底层的运行机制来看,其实没有多维数组,都只是一维数组进行分割的。
三、 Arrays工具类的使用
四、 数组使用中的常见异常
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
五、 训练题
概念题
1.java能动态分配数组吗?
可以分配,且遵循3个步骤,声明,开拓空间,赋值。
2.我怎么知道数组的长度?
数组作为引用类型,其中有一个length这个属性。
3.数组有没有length()这个方法? String有没有 length()这个方法
数组是只有length这个属性,String是只有这个方法
4.Java中的任何数据类型都可以使用System.out.pritln方法显示
不是的,在输入数组的名字时,其输出的是其堆空间中存储位置的hashCode值
5.操作二维数组的注意点
操作二维数组不应使用常数来控制维数。具体方法是array.length表示行数,
array[row].length来表示row行的列数。这样当数组行数和列数不相等时,
代码可以自动调整为正确的值。
2.编程题
①创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同
class ArrayExer{
public static void main(String[] ags){
int[] arr = new int[6];
for(int i = 0;i < arr.length;i++){
arr[i] = i + 1;
}
for(i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
}
}
3.Arrays工具类的使用
练习:
1、从键盘输入本组学员的成绩,放到数组中
2、用for循环显示所有学员的成绩
3、排序:从低到高
4、查找是否有正好60分的,如果有返回位置
5、复制成绩最低三名构成新数组
6、用工具类打印成绩最低三名成绩
import java.util.Scanner;
import java.util.Arrays;
class ArraysTest{
public static void main(String[] ags){
int[] score = new int[5];
Scanner input = new Scanner(System.in);
for(int i = 0;i< input.length;i++){
System.out.print("请输入第" + (i+1) +"个学员成员");
score[i] = input.nextlnt();
System.out.println("本组同学的成绩如下:");
for(int i = 0 ; i<score.length;i++){
System.out.println(score[i]);
}
Arrays.sort(score);
System.out.println("这个是排序后的结果:"+Arrays.toString(score);
int index = Arrays.binarySearch(score,60);
if(index < 0 ){
System.out.println("这里面没有60分");
}
else{
System.out.println("60分的下标是:"+index);
}
int[] newArray = Arrays.copyOf(sorce,3);
}
}
}