`

java基础知识1

阅读更多

1. 多维数组第一维的长度必须固定,但是第二维的长度可以不同,因为第一维中相当于存的是一个引用。这个引用指向的是第二维的数组空间。如下例:

 

       int [][]a;
       a=new int[3][];
       a[1]=new int[2];
       a[2]=new int[3];

 

 2. 变量顺序

    (静态变量,静态程序块)>(变量,初始化块)>构造器

     父类静态>子类静态>(父类普通变量,初始化块)>父类构造器>(子类普通变量,初始化块)>子类构造器 

    变量和初始化块的顺序尤其在代码中的顺序决定

 

3. split的用法误区:aplit(separator,limit)  其中limit表示字符串会被分成几部分,separator是一个正则表达式,

    需要完全符合正则表达式的用法。对于下列特殊字符,必须用转义符来实现:比如aplit("\\+")正确写法;

    aplit("+")会报错的。

    特殊字符: * + .  等这些必须前面加转移符。

 

4.定义实例变量时指定的初始值、初始化块中为实例变量指定初始值的语句的地位是平等的,当经过编译器处理后,

   他们都将被提取到构造器中。

  

 

public class A {
     {
    	 System.out.println("a");
    	 count=30;
     }
     int count=20;
     public A(){
    	 System.out.println("b");
    	 System.out.println(count);
     }
     public static void main(String []args){
    	 A a=new A();
     }
}
结果:
a
b
20

 

这里需要强调的是,count的值是20,而不是30.这是因为java里定义语句和赋值语句不一定一起执行,虽然在定义的时候就已经赋值:如int count=20,实际上会被分割成两步:

  (1) int count;

   (2)count=20;

而jvm编译的时候,会先定义变量,然后把定义实例变量时指定的初始值,初始化代码块中为实例变量指定的初始值都合并在构造器中,并且顺序和源代码中赋值语句的顺序一致。

 

5. 关于类中定义本类的对象

 

  

public class A {
    A a=new A();   
     public A(){
    	 System.out.println("b");
    }
     public static void main(String []args){
    	 A aa=new A();
     }
}
//结果:会产生死循环,因为实例化aa时,A里定义的变量a又需要实例化,
//就会产生一个init的死循环。

   但是下面的代码就不会产生错误

public class A {
    static A a=new A();   
     public A(){
    	 System.out.println("b");
    }
     public static void main(String []args){
    	 A aa=new A();
     }
}

   因为类里的A是静态的,只要实例化一次,所以不会产生死循环

 

6. new Class() 会判断该类是否已经加载,如果加载,直接进行内部的初始化,不用管类里的static变量。

    如果没有,则先加载该类,就是加载类的字节码,然后初始化其中的静态变量。具体题目见《疯狂java》P28 下

 

7. final 修饰的变量或类变量,只有在定义的时候初始化才能是宏替换,否则在初始化块或静态初始化块中的

    不能宏替换。P53

 

8. 对于一个引用类型的变量,当通过该变量访问它所引用的的对象的实例变量时,该实例变量的值取决于声明该变量时

    的类型,当通过该变量来调用它所引用的对象的方法时,该方法行为取决于他所实际引用的对象的类型。P39

  但是类中的静态变量和方法都是依靠类来调用的,所以类的对象来调动静态方法,最后是通过类来调用的。 父类和子类都有静态方法A,如果把子类的对象付给父类的引用,那么通过父类的引用调用方法A,会调用父类中的方法 P207

 

package interview; 
public class Vehicle { 
   int num=1; 
    public Vehicle() 
    { 
     System.out.println("vehicle"); 
    } 
    public void run() 
    { 
    System.out.println("Vehicle Runs"); 
    } 
 
} 
 
 
package interview; 
 
public class Car extends Vehicle { 
     int num=2; 
    public Car() { 
        System.out.println("Car "); 
    } 
    public  void run() 
    { 
    System.out.println("Car Runs"); 
    } 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
      
     Vehicle v=new Car(); 
     System.out.println(v.num); 
     v.run(); 
    } 
     
} 
 
 
运行结果:
vehicle 
Car  
1 
Car Runs 

 

   方法有多态,变量没有。所以什么类型的引用,调用该类型中的变量

 

9. 内部类(局部内部类)访问的局部变量必须用final修饰。这是因为局部变量的作用域在方法内,该方法结束后,

     该变量  就结束了。但是内部类可能产生隐式的闭包,这个闭包可以使被引用的局部变量脱离原来的方法继续存在,

     也就是说扩大了局部变量的作用域,如果没被final修饰,该值可以随意改变,会引起混乱。P55

 

10.java编程中的重载和覆盖的条件

 

    重载方法必须满足下列条件

    (1) 方法名必须相同

    (2) 方法的参数签名必须相同

    (3) 方法的返回类型和方法的修饰符可以不相同

 

    方法覆盖必须满足下列条件

    (1) 子类的方法的名称及参数必须和所覆盖的方法相同

    (2) 子类的方法返回类型必须和所覆盖的方法相同

    (3) 子类方法不能缩小所覆盖方法的访问权限

    (4) 子类方法不能抛出比所覆盖方法更多的异常

分享到:
评论

相关推荐

    Java基础知识1,Java基础知识1

    Java基础知识1,Java基础知识1

    java基础知识 ppt

    java基础知识,帮助初学者更快更好地掌握java。ppt内容具体易懂,希望对刚接触java的初学者有所帮助。

    Java基础知识点总结.docx

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。

    java基础知识大全(必看经典)

    Java 基础知识大全 本资源摘要信息是 Java 基础知识大全的总结,涵盖了 Java 语言的基本概念、特点、历史发展等方面的知识点。以下是本资源摘要信息的详细内容: 一、 Java 语言的特点 * 面向对象:Java 语言是...

    JAVA基础知识总结.

    JAVA基础知识总结 JAVA基础知识总结 JAVA基础知识总结

    java基础知识的培训ppt

    java基础知识的培训ppt,对于java初学者来说可以有一些作用。

    Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例.zip

    Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础...

    Java基础知识点和答案

    Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案...

    Java基础知识总结.pdf

    ### Java基础知识精炼 #### 一、Java概述与发展历程 Java是一种高级编程语言,由Sun Microsystems公司的James Gosling等人于1991年开始研发,原名为Oak,旨在控制嵌入式设备如有线电视交换盒和PDA。1994年正式更名...

    java基础知识总结

    java基础知识

    java 基础知识总结

    自己在网上找的相对好一点的java复习资料,留个纪念 。详细讲述了Java课程的知识点

    java基础知识点总结及面试问题

    java基础知识点总结及面试问题java基础知识点总结及面试问题java基础知识点总结及面试java基础知识点总结及面试问题

    java基础知识点总结

    java基础知识点,面试宝典,最适合你的java面试知识点,所学java知识点总结

    JAVA基础知识总结

    Java基础知识总结涵盖了Java程序设计语言的核心概念和常用知识点。在详细学习和总结这些知识点之前,首先需要对Java有一个整体的认识。Java是一种面向对象的编程语言,它具有跨平台的特性,即“一次编写,到处运行”...

    Java基础知识.pdf

    Java基础知识.pdf

    Java基础知识总结

    Java基础知识总结 一些的基础知识 适合初学者和回顾以前的知识

Global site tag (gtag.js) - Google Analytics