java学习中遇到的容易混淆的概念(自学笔记一)

1、值传递和引用传递
java数据类型有基本数据类型和引用数据类型。
基本类型:四类八种,包括:四种整数类型(byte、short、int、long),两种浮点数类型(float、double),一种字符类型(char),一种布尔类型(boolean)。
引用类型:类是指编程语言中定义的在句柄中存放着实际内容所在地址的地址值的一种数据形式,主要包括:类、接口、数组。
java内存空间数据区分为:.虚拟机栈、堆、程序计数器、方法区、本地方法栈(图片是一个大佬博客里的,地址:https://blog.csdn.net/bntx2jsqfehy7/article/details/83508006)
在这里插入图片描述
基本数据类型的存储分为:
基本数据类型的局部变量。直接存储在栈上,即数据本身的值就存储在栈空间,创建局部变量时,(例:int age = 10)首先创建变量名(age),然后在栈中查找是否有相同值存在(10),若存在,则age直接指向这个地址,即会出现两个同值不同名的变量由于具有相同值指向同一个地址。
基本数据类型的成员变量,即在类中定义的变量。名和值都存储于堆中,其生命周期和对象的是一致的。
基本数据类型的静态变量。方法区用来存储一些共享数据,因此基本数据类型的静态变量名以及值存储于方法区的运行时常量池中,静态变量随类加载而加载,随类消失而消失。

引用数据类型的存储:变量名存在栈中,变量值存储的是对象的地址,并不是对象的实际内容。

值传递:在方法被调用时,实参通过形参把它的内容副本传入方法内部,此时形参接收到的内容是实参值的一个拷贝,因此在方法内对形参的任何操作,都仅仅是对这个副本的操作,不影响原始值的内容。
引用传递:”引用”也就是指向真实内容的地址值,在方法调用时,实参的地址通过方法调用被传递给相应的形参,在方法体内,形参和实参指向同一块内存地址,对形参的操作会影响的真实内容。

如果是对基本数据类型的数据进行操作,由于原始内容和副本都是存储实际值,并且是在不同的栈区,因此形参的操作,不影响原始内容。
如果是对引用类型的数据进行操作,分两种情况,一种是形参和实参保持指向同一个对象地址,则形参的操作,会影响实参指向的对象的内容。一种是形参被改动指向新的对象地址(如重新赋值引用),则形参的操作,不会影响实参指向的对象的内容。

2、抽象类和接口
抽象类定义规则:(1)用abstract关键字修饰;
(2)抽象类不能直接实例化;
(3)抽象类定义的抽象方法只需声明,不需要实现;
(4)含有抽象方法的类必须被声明为抽象类,抽象类的子类必须实现所有抽象方法后才能被实例化。
抽象类的特征:(1)抽象类可以有构造方法,但是必须在子类中被调用;
(2)抽象类不能使用final定义;(因为final定义的类不能有子类)
(3)外部抽象类无法使用static声明,内部抽象类可以使用static声明。

3、重载和重写
重载,即方法名称相同,方法的参数不同,也就是他们的方法签名(包括方法名+参数列表)不同,重载以表面看起来一样的方式(方法名相同),传递不同形式的参数,来完成不同类型的工作,这样“一对多”实现“静态多态”。
重写:当一个子类继承一个父类,如果子类中的方法与父类中的方法的名称、参数个数及类型且返回值类型等都完全一致时,称子类中的方法重写了父类中的方法。
4、继承的限制:(1)不允许多继承,但可以多层继承,多层继承的层数不宜超过三层
(2)从父类继承的私有成员,不能被子类直接使用,必须通过Setter和Getter方法简介操作
(3)子类进行实例化对象时,从父类继承而来的数据成员需要先调用父类的构造方法初始化,然后再用子类的构造方法初始化本地的数据成员。
(4)被final修饰的类不嗯能够被继承
5、内部类作用:
(1)提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类;
(2)内部类成员可以直接访问外部类的私有数据;但是外部类不能访问内部类的实现细节;
(3)匿名内部类适合用于创建那些仅需要一次的类。

6、静态内部类可以包含静态成员,也可以包含非静态成员。
根据静态成员不能访问非静态成员的规定,静态内部类不能访问外部类的实例成员。
静态内部类是外部类的一个静态成员,因此外部类的静态方法、静态初始化也可以使用静态内部类来定义变量、创建对象等。
外部类依然不能直接访问内部类的成员。

7、当类被载入时,静态代码块被执行,且只执行一次。静态代码块优先于静态方法。

8、final标记的类不能被继承。
final标记的方法不能被子类重写。
final标记的变量(成员变量或局部变量)为常量,只能赋值一次。

9、将字符串转换成整型:Integer.parseInt
装箱:将基本数据类型变为包装类,时期具有对象的性质,利用各个包装类的构造方法完成,如:Integer x = new Integer(10)
拆箱:将包装类变为基本数据类型,使用Number类的xxxValue()完成,如:int a = x.intValue()
将基本类型变为字符串:(1)任何基本数据类型遇见String之后自动变为字符串;
(2)利用String类之中提供的一系列valueOf()方法。
exit(int status)方法:对于发生异常情况想要终止虚拟机,则传递一个非零值参数;若正常情况下终止,传递零。
CurrentTimeMillis方法:返回自1970年1月1日0点0分0秒起至今的以毫秒为单位的时间。
getProperties方法:获取当前虚拟机的环境属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值