Java学习之路

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);
		}
	}
}
		
		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值