数组,类与对象简介

数组

1.1概念
数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致
1.2数组的定义
格式一:数组存储的数据类型[] 数组名字;
例如:int[] array;
解释:定义了一个int类型的数组,数组名叫array
格式二:数组存储的数据类型 数组名字[];
例如:int array[];
解释:定义了一个int类型的数组,数组名是array数组
1.3数组的初始化
Java中的数组必须先初始化,然后才能使用,初始化就是给数组元素分配内存空间,为数组中的元素赋值。
动态初始化:
格式一:数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
例如:int[] array = new int[2];//定义长度为2的数组

动态初始化,不同类型的数组的默认值不一样
byte,short,int,long,数组的默认值为0
float,double型的,数组默认值为0.0
char,数组的默认值为’\u0000’
boolean,数组的默认值为false
引用类型(类,接口,数组),数组的默认值为null

注意:数组有定长特性,长度一旦指定,不可更改。

1.4静态初始化
格式一:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
例如:int[] array = new int[]{1,2,5,6};

	格式二:数据类型[] 数组名 = {元素1,元素2,元素3...};
	例如:int[] array = {1,2,3,4};

1.5数组的访问方式
1、数组变量访问方式
格式:数组名

2、数组内部保存的数据的访问方式:
格式:数组名[索引]
注意:
1、索引是从0开始的
2、索引是连续的
3、索引是逐一增加的,每次增加1

1.6Java中数组的内存分配
在这里插入图片描述
为了节省空间,可以出现两个变量指向同一个地址的情况。

2数组的常用方法

2.1数组的遍历
public static void main(String[] args){
int[] arr={1,2,3,4};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);

for(int i=0;i<arr.length;i++){
	System.out.println(arr[i]);
}

}
2.1数组可以做方法的返回值
注:方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.

二 ,二维数组

1.1foreach,专门用来遍历的关键字
foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象 obj){
引用了x的java语句;
}
例:int[] arr={1,2,3,4};
for(int a: arr){
System.out.println(a);
}
1.2二维数组与多维数组:
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
比如:String[][] str = new String[3][4];

1.3定义与初始化
格式一:数组存储的数据类型[][] 数组名字 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数。
例如:int[][] array = new int[3][2];
解释:定义了一个二维数组array,
这个二维数组有3个一维数组,名称是array[0],array[1],array[2];
每一个一维数组有2个元素,通过array[m][n]来取值。
格式二:数组存储的数据类型[][] 数组名字 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
例如:int[][] array = new int[3][];
//为每一个一维数组分配空间
array[0] = new int[2];
array[1] = new int[3];
array[2] = new int[1];
解释:定义了一个int类型的数组,
这个二维数组有3个一维数组,名称是array[0],array[1],array[2];
每一个一维数组没有指定大小,可以动态给出。
格式三:数组存储的数据类型[][] 数组名字 = new 数据类型[][]{{},{},{}};
例如:int[][] array = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
格式四:数组存储的数据类型[][] 数组名字 = {{},{},{}};
例如:int[][] array = {{1,2,3},{4,5,6},{7,8,9}};

1.4、格式一和格式二两种方式的区别及其(内存图展示)
1、int[][] array = new int[3][2];
在这里插入图片描述
int[][] array = new int[3][];
在这里插入图片描述
静态初始化的存储方式
int a[][] = {{1,2},{3,4,5},{}};
在这里插入图片描述

三,类与对象
Java中,万物皆可对象
一切事物都有 属性和行为,一般Java的的类就包括属性和行为的集合
1.1对象和类的关系
1、类是对一类事物的描述,是抽象的。
2、对象是一类事物的实例,是具体的。
3、类是对象的模板,对象是类的实体。
1.2定义类:
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现
1.3类的命名规则
1、类名应该以下划线()或字母开头,最好以字母开头。
2、第一个字母最好大写,如果类名由多个单词组成,则每个单词的首字母最好都大 写。
3、类名不能为 Java 中的关键字,例如 boolean、this、int 等。
4、类名不能包含任何嵌入的空格或点号以及除了下划线(
)和美元符号($)字符之外的特殊字符。

注1、一个.java文件内只能有一个public 类,可以有多个default类(顶级类只有public和default两种修饰符),而且源文件名必须与public类名一致,否则编译报错

1.4对象的创建及使用
对象的创建:
类名 对象名 = new 类名();
Random r = new Random();
对象的使用:
1.使用对象访问成员变量 对象名.成员变量;
2.使用对象访问成员方法 对象名.成员方法;

1.5对象内存图分析
熟悉几个概念:
堆区:
1.存储new出来的对象,每个对象都包含一个与之对应的class的信息。(class的目的 是得到操作指令)
2. jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 。
栈区:
1.每个线程包含一个栈区,栈中只保存基础数据类型的值和对象以及基础数据的引用
2.每个栈中的数据(基础数据类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。在这里插入图片描述

1.6对象调用方法图解
一个对象,调用方法内存图
在这里插入图片描述
1.7匿名对象
1、概述:创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。
格式:new 类名(参数列表);
例如:new Scanner(System.in);
2、使用场景
1.创建匿名对象直接调用方法,没有变量名。
new Scanner(System.in).nextInt();
2.一旦调用两次方法,就是创建了两个对象,造成浪费,请看如下代码。
new Scanner(System.in).nextInt();
new Scanner(System.in).nextInt();
注:一个匿名对象,只能使用一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值