1 .引用数据类型(class、array等)实际上是将堆栈内存和堆内存的数据类型分开,在堆栈内存中存储对象,在堆内存中存储具体的值。
数组是引用数据类型,因此数组变量保存数组堆存储器的地址,而不是数组的实体。
2 .对于引用数据类型,例如,如果数组传递给方法,然后方法对数组本身进行了修改,则修改结果也会保存。 即使方法没有返回值,修改结果也会被保存。 (这也可以理解为什么在setter中设定对象属性后,getter可以输出修改后的内容。)
3 .封装的属性或方法只能在该类的内部调用,而不能在类的外部调用。
4.setter的作用是为属性赋值,赋值后该属性值会发生变化。 在主方法中使用getter时得到的值是修改后的值。
5.newPerson('Oscar ',30 ).tell ); 这是匿名对象的方法使用格式!
6 .如果使用new关键字,无论如何都会打开新的堆内存区域,但String str='Hello '的格式可能会有所不同。
7 .务必记住声明字符串内容不能更改一次
String对象的内容实际上是通过断开和连接内存地址进行的,但字符串本身的内容没有任何变化。 这意味着,即使没有使用new关键字,程序也会自动打开新的堆内存。
8 .引用传递是指将堆内存空间的使用权传递给多个堆栈内存。
9.
this的一种用法是将参数的name值赋予name的name属性,也就是将从构造方法传递的参数值支付给属性。 赋值时显式指定属性。 例如,“this.name”和“this.age”属性。 今后,在类中访问属性时,建议全部使用this
10.
在this中调用构造方法的优点很有用,因为可以重复执行在this中指定的构造方法,但在使用this调用构造方法时是必需的,并且只能在构造方法的第一行中执行这意味着该程序不包含在至少一个this中调用的构造方法。 (一般以无参结构为出口)
11 .对象比较操作是java中的比较核心的操作,
步骤()1)判断对象地址是否相等;
)2)通过单独判断对象属性是否相等的if(p1.compare ) p2 )来判断
p1.name和p1.getName都可以访问和检索对象
12 .使用类名访问静态属性:
Person.country='B city ';
13.String args[]表示运行时参数,参数以“Java类名参数1参数2参数3”的形式传递。 的所有输入参数都保存在args数组中。
14 .构造块(直接写入类的代码块);
构建方法;
主要方法;
15.
16 .内部类使您可以轻松访问外部类中的专用属性。 通过使用静态定义内部类,可以直接访问内部类中的属性
总结:
不能在主方法类中直接调用内部类Inner。 在外部类中可以调用内部类。 在主方法中只能调用外部类或通过外部类调用内部类(即静态声明的内部类)。
总结:内部类Inner包含print ()方法。
而且内部类存在于外部类Outer的fun ) )方法中,
fun ) )方法仍在Outer外部类中调用。
因此,在主方法中用new Outer ().fun )进行代入,调用方法的操作。