2020-8-7 Java语言基础_03

(1)二维数组:

①书写格式:

格式1:

数据类型[][] 数组名=new 数据类型[m][n];
m表示这个二维数组有多少个一位数组,n表示每一个一维数组的元素个数;
例:
int[][] arr=new int[3][2],定义了一个二维数组arr,每个二维数组有3个一维数组(arr[0],arr[1],arr[2]),每个一维数组有两个元素(arr[0][0],arr[0][1]....),可通过arr[m][n]获取;
另一种书写方式(个人不太喜欢):
数据类型[] 数组名[] =new 数据类型[m][n];
例:
一道面试题:int[]x,y[];
可以将其拆分为int[]x和int[] y[];

格式2:

数据类型[][] 数组名=new 数据类型[m][];
m表示这个二维数组有多少一维数组,这一次没有直接给出一维数组的元素个数,可以动态给出;
例;int[][] arr=new int[100][];
arr[0]=new arr[2](动态给出一维数组的元素个数为2);
arr[1]=new arr[3](动态给出一维数组的元素个数为3);
      .
      .
      .
下面就不一一列举了;

格式3:

首先我们需要知道的是,格式1和格式2其实都是静态初始化,数组内元素都是默认值,格式3和1,2不同,它是一种动态初始化,它的形式为:
数据类型[][] 数组名=new 数据类型[][]{{元素1,元素2...},{元素1,元素2...}....};
但是上面这种书写格式稍微有点麻烦,下面我们给出简化版;
数据类型[][] 数组名={{元素1,元素2...},{元素1,元素2...}....};
是不是和一维数组的动态初始化很相似呢;

零碎知识点:

变量:

局部变量:存储在栈内存内,无默认初始化值;
成员变量:存储在堆内存中,有默认初始化值;

构造方法:

作用:给对象的数据进行初始化;
格式:1.方法名与类名相同;
	 2.没有返回值类型,连void都没有;
	 3.没有任何的返回值;

static:

被static修饰的方法和成员变量有以下特点:
1.随着类的加载而加载;
2.优先于对象存在;
3.被类的所有对象共享;
4/可以通过类名调用,也可以通过对象名调用;
5.家在入方法区的静态区,有自己的静态标记,方法标记,当对象通过内存地址访问静态方法,静态变量时,访问的都是同一个静态标记,方法标记;
注意事项:
1.静态方法中没有this关键字,因为this是随着对象的创建而存在,而静态方法先于对象存在;
2.静态方法只能访问静态方法和静态变量;

main方法:

public static void main(String[] args):
public 被jvm调用,访问权限足够大;
static 被jvm调用, 无需创建对象, 直接类名访问;
void: 被jvm调用, 不需要给jvm 传递返回值;
main: 一个通用的名称, 虽然不是关键字, 但被jvm识别;
String[] args: 一个字符串数组, 以前用于接收键盘录入;

文档注释:

/**
*说明内容;
*@author 作者:说明作者;
*@version 版本:说明版本;
*@param 变量 :说明变量作用;
*@return:说明返回值类型及作用;
*/		
用javadoc解析文档注释:
格式:javadoc -d 目录 -author -version 文件名
目录:一个文件的路径;
"."表示当前目录;

Math:

public static double random:返回带正号的double值,该值取值范围为[0.0,1.0);

面向对象:

代码块:

在java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块;
局部代码块:
在方法中出现,限定变量生命周期(随方法的存在而存在),及早释放,提高内存利用率;
构造代码块:
在类中方法外出现,多个构造方法中相同的代码存放在一起,每次调用构造都执行,并在构造方法前执行;
静态代码块:
在类中方法外出现,并加上static修饰,用于给类进行初始化,在加载的时候就执行,并且只执行一次;
加载顺序:
静态代码块->构造代码块->构造方法;
fina修饰的局部变量需要在构造方法完毕前初始化;

抽象类:

抽象类中的构造方法用于初始化;
成员变量:既可以使常量,也可以是变量;
成员方法:既可以是抽象的,也可以是非抽象的;
抽象类中不能有的关键字:
private:冲突,无法继承;
fina:冲突,无法重写;
static:无意义,无法通过类名直接调用;

接口:

成员变量:只能是常量,默认修饰符public static final;
构造方法:无;
成员方法:原本只能有抽象方法,用public abstract修饰.jdk8后推出了default默认方法,jdk9之后推出了static静态方法;

内部类:

成员内部类:在成员位置定义的类;
局部内部类;在局部位置定义的类;
访问成员内部类格式:
外部类名.内部类名 对象名=外部对象.内部对象;
例:
Outer.Inner oi=new Outer().newInner();
用private修饰成员内部类:
提高了安全性,使得成员内部类只能通过外部类创建方法,在方法里创建内部类对象并调用;
用static修饰内部类;
方便了访问,是成员内部类变为静态内部类;
静态内部类:
在类里只能访问静态变量和静态方法,其内部可以有静态或非静态成员变量或成员方法;
访问方式:
例:
Outer.Inner oi=new outer.Inner();(外部类的对象不需要在后面加括号了);
另一种访问方式(只针对静态内部类的静态方法):
例:
Outer.Inner.show();(show为静态方法);
局部内部类:
需要注意的是,局部内部类访问局部变量,局部变量必须用final修饰(jdk 8之后似乎不需要),因为局部变量是随着类的存在而存在,调用结束消失,而堆内存的内容不会立即消失(垃圾回收机制),所以我们用final修饰,使其变为常量.						
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值