(1)构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
(2)下面Random()的两种构造方法:
Random():创建一个新的随机数生成器。
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
我们可以在构造Random对象的时候指定种子(这里指定种子有何作用,请接着往下看),如:Random r1 = new Random(20);
或者默认当前系统时间的毫秒数作为种子数:Random r1 = new Random();
给定一个参数n,nextInt(n)将返回一个大于等于0小于n的随机数,即:0 <= nextInt(n) < n
(3)
1.静态代码块是在类中方法外成员位置出现,用了static修饰;
2.静态代码块在这个类第一次被调用或实例化的时候就会被执行。
3. 静态代码块只会执行一次,一般会用来初始化一些值,并且在所有对象中全局共享。
(4)Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。
-
final类不能被继承,没有子类,final类中的方法默认是final的。
-
final方法不能被子类的方法覆盖(不能被子类重写),但可以被继承。
-
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
-
final不能用于修饰构造方法。
- 注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
final方法
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。使用final方法的原因有二:
①把方法锁定,防止任何继承类修改它的意义和实现。
②高效,编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
final变量(常量)
用final修饰的成员变量表示常量,值一旦给定就无法改变;final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。一旦给final变量初值后,值就不能再改变了。
final参数
当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。
(5)在java中,public static final int i=0;与public final static int i=0;的区别是什么----------这俩是没有区别的,只是final static的可读性比较强些。
(6)直接输出一个类的对象,得到的结果是 包名+类名+一串字符(类的哈希码);
如果类中有 public String toString(){}方法,得到的结果是 这个方法返回的结果。
(7)
String是一个特殊的包装类数据。可以用:
String str = new String("abc");
String str = "abc";
两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。而第二种是先在栈中创建一个对 String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc” 则直接令str指向“abc”。
对于String str = new String("abc")的代码,则一概在堆中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象,从而加重了程序的负担
另一方面, 要注意: 我们在使用诸如String str = "abc";的格式定义类时,总是想当然地认为,创建了String类的对象str。担心陷阱!对象可能并没有被创建!而可能只是指向一个先前已经创建的对象。只有通过new()方法才能保证每次都创建一个新的对象
(8)
(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
)对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其
对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
(9) 1.Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类,java的任何类都继承了Object中的函数,并且可以覆盖不被final修饰的函数。例如,没有final修饰的toString()函数可以被覆盖
(2)判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象。这样我们往往需要重写equals()方法。
(3)小结:==是判断两个对象是否是同一对象,而equals()则判断两个对象的内容是否相等,但条件是类必须已经实现了从Object继承而来的equals()方法。
2.Object obj这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。这样你在方法体中需要相应的做些处理。因为Object是基类,所以使用Object obj这样的参数形式,允许一切继承自Object的对象作为参数。
在java中,类变量(也叫静态变量)是类中独立于方法之外的变量,用static 修饰。

被折叠的 条评论
为什么被折叠?



