文档介绍:JAVA中一些需要特别注意的地方
一、JAVA -SE部分:
1. 关于引用传递的问题:
所谓的引用传递,就是将一个堆内存空间的使用权给多个栈内存空间,每个栈内存空间都可以修改堆内存中的内容
所有的对象名称都在栈内存中保存,而对象的具体内容则保存在对应的堆内存中,更准确的说法就是在栈内存中实际保存的是堆内存空间的访问地址
具体内存分配如下:
使用new开辟堆内存空间
存储引用(实例)
指向对应的堆内存
存储对象
Name=null;
Age=0;
堆内存
per
栈内存
Person per=new Person( );
例如现在new一个对象:
Person per1=new Person( );
现在又有如下语句:Person per2=null; per2=per1;
那么设置per2对象的内容实际上就是设置per1对象的内容,假如per1对象的name、age属性值分别为“张三”、23,那么通过以下语句可以修改per1对象的属性值:
="李四" ; =32; 那么:
="李四" ; =32;
注意:匿名对象只在堆内存中开辟空间,而不会在栈内存中开辟空间
( )的区别:
使用length取得数组的长度
使用length( )方法取得字符串的长度
:
(1)private访问权限:private属于私有访问权限,可以用在属性的定义、方法的声明上,一旦使用了private关键字声明,则只能在本类中访问;
(2)default(默认)访问权限:如果一个类中的属性或方法没有使用任何的访问权限声明, 则就是默认的访问权限,默认的访问权限可以被本包中的其他类所访问,但是不能被其他包中的类所访问;
(3)protected访问权限:protected属于受保护的访问权限,一个类中的成员如果使用了 protected访问权限,则只能被本包及不同包的子类所访问;
(4)public访问权限:public属于公共访问权限,如果一个类中的成员使用了public访问权限,就可以被所有的类访问,不管是不是在同一个包中。
对以上所述列表如下:
①类访问修饰符
序号
说明
1
类的修饰符只有public和default两个;
2
public修饰类时表示任何包的其它类都可以访问该类;
3
访问修饰符为default时只有在同一个包里的类才能访问它,其他包里的都不行;
4
类的构造函数(构造器) 不能用final、abstract、synchronized、native、static等关键字进行修饰;
②成员访问修饰符(public、protected、default、private)
序号
规则说明
1
java的成员访问修饰符有4种:public、private、protected、default
2
public static == static public;
3
类的成员访问修饰符的详细描述如下:(√表示允许访问,×表示不能访问)
visibility
public
protected
default
private
在本类中能否访问
√
√
√
√
在同一个包中不同的类中能否访问
√
√
√
×
在不同包的子类中能否访问
√
√
×
×
在不同包中的父类中能否访问
√
√
×
×
在不同的包中不同的类中访问
√
×
×
×
综合上表,访问修饰符的访问权限为:public>protected>default>private
4. 关于==和equals的区别:
例如以下程序:
public class StringDemo{
public static void main(String[] args){
String str1="hello" ;
String str2=new String("hello");
String str3=str2 ;
( str1==str2);
( str1==str3);
( str2==str3);
}
}
程序的输出结果为:false false true
对于str1和str2来说,其内容分别保存在堆内存的不同地址空间中,所以即使内容相同,但是地址的值是不相同的,所以str1和str2比较不相等。而str2和str3指向同一堆内存空间,是同一地址,所以最终结果str2和str