java的基本知识(1)

(1)构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。

1.构造方法作用:(1).构造出来一个 类的实例 (2).对构造出来个一个 类的实例(对象)初始化。
2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
3.主要完成对象的初始化工作,构造方法的调用是 在创建一个对象时使用new操作进行的
4.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。


(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的对象作为参数。


可以使用类型为Object的变量指向 任意类型的对象
Object类有一个 默认构造方法pubilc Object(),在 构造子类实例时,都会先调用这个默认构造方法。
Object类的变量只能用作各种值的通用持有者。要对他们进行任何专门的操作,都需要知道它们的原始类型并进行类型转换。例如:
Object obj = new MyObject();
MyObject x = (MyObject)obj;


在java中,类变量(也叫静态变量)是类中独立于方法之外的变量,用static 修饰。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值