zoukankan      html  css  js  c++  java
  • Java基础知识

    数据类型

    	基本数据类型--byte 8
    				boolean 
    				char 16
    				short 16
    				int 32
    				float 32
    				double 64
    				long 64
    	缓存池--new Integer(123) 与 Integer.valueOf(123) 的区别在于:
    			new Integer(123) 每次都会新建一个对象;
    			Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。
    

    String

    --声明为final,不可继承。
    	--String不可变的好处:可以缓存哈希值(String用做HashMap的key。可以使得hash值也不可变,只需要进行一次计算)
    					   StringPool的需要(如果一个String对象已经被创建过,那么就会从StringPool中取得引用)
    					   安全性(String不可变性可以保证参数不可变)
    					   线程安全(String不可变性天生具备线程安全,可以在多个线程中安全地使用)
    					   
    	--String/StringBuffer/StringBuilder
    			可变性:String不可变,StringBuffer和StringBuilder可变
    			线程安全:String 不可变,因此是线程安全的
    					StringBuilder 不是线程安全的
    					StringBuffer 是线程安全的,内部使用 synchronized 进行同步
    			实例化:String可以利用构造函数,也可以直接赋值。StringBuffer只能用构造函数
    			
    	--字符串常量池:字符串常量池(String Pool)保存着所有字符串字面量(literal strings)。
    				  可以使用String的intern()方法在运行过程中将字符串添加到String Pool中。
    				  在Java 7之前,String Pool被放在运行时常量池中,它属于永久代。而在Java 7,String Pool 			           被移到堆中。是因为永久代的空间有限,在大量使用字符串的场景下会导致 OutOfMemoryError。
    				  
    	--new String("abc"):使用这种方式会创建两个字符串对象(前提是String Pool中还没有 "abc" 字符串对象)。	  			"abc" 属于字符串字面量,因此编译时期会在 String Pool 中创建一个字符串对象,指向这个 "abc" 				 字符串字面量;而使用 new 的方式会在堆中创建一个字符串对象。
    

    继承

    --普通类和抽象类的区别
    	抽象类不能被实例化,需要继承抽象类才能实例化其子类
        抽象类可以有抽象方法,抽象方法只需申明,无需实现;含有抽象方法的类必须申明为抽象类
        抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类
        抽象方法不能被声明为静态static
        抽象方法不能用private和final修饰
        
    --接口: Java 8之前,它可以看成是一个完全抽象的类,也就是说它不能有任何的方法实现。8以后可以有默认的方法实现。
    接口的成员(字段+方法)默认是public的,并且不允许定义为private或protected。接口的字段默认都是static和final的。
    
    --接口与抽象类的区别
    	从设计层面上看,抽象类提供了一种IS-A关系,那么子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。
    	从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
    	接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。
    	接口的成员只能是 public 的,而抽象类的成员可以有多种访问权限。
    	
    --super:访问父类的构造函数:可以使用super()函数访问父类的构造函数,从而委托父类完成一些初始化的工作。
    		访问父类的成员:如果子类重写了父类的某个方法,可以通过使用super关键字来引用父类的方法实现。
    		
    --重写与重载的区别
    	1.重写是子类继承父类,重写父类方法;重载是同一个类有多个同名方法,但参数不同。
    	2.重写只能有一个/一对方法产生关系,重载是多个方法之间的关系。
    	3.重写要求同名同参同返一大一小,重载要求同名不同参返回值无关。
    	4.重写调用方法体根据对象类型决定,重载根据调用时的实参形参决定。
    	
    --多态
    多态是指同一个操作作用在不同对象时,会有不同的作用。
    	运行时多态:程序中定义的对象引用所指向的具体类型在运行期间才确定                                                      继承
        		  重写
        		  向上转型(父类引用指向子类对象)
    	编译时多态:方法重载
    

    Object通用方法

    equals();
    hashCode();
    clone();
    toString();
    getClass();
    finalize();
    notify();
    notifyAll();
    wait();
    
    --重写了equals方法为什么还要重写hashcode
    假设两个对象,重写了其equals方法,其相等条件是属性相等,就返回true。如果不重写hashcode方法,其返回的依然是两个对象的内存地址值,必然不相等。这就出现了equals方法相等,但是hashcode不相等的情况。这不符合hashcode的规则。
    --浅拷贝和深拷贝
    	拷贝对象和原始对象的引用类型引用同一个对象。
    	拷贝对象和原始对象的引用类型引用不同对象。
    

    关键字

    --final
    	数据:对于基本类型,final 使数值不变;
    		 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。
    	方法:声明方法不能被子类重写。
    	类:声明类不允许被继承。
    	
    --static
    	静态变量:静态变量又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来
    			访问它。静态变量在内存中只存在一份。
    			实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。
    	静态方法:静态方法在类加载的时候就存在了,不依赖于任何实例。所以静态方法必须有实现,即它不能是抽象方法。
    			只能访问所属类的静态字段和静态方法,方法中不能有 this 和 super 关键字。
    	静态语句块:静态语句块在类初始化时运行一次
    	静态内部类:非静态内部类依赖于外部类的实例,而静态内部类不需要。
    	静态导包:在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。
    	初始化顺序:静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代			   码中的顺序。最后才是构造函数的初始化。
    	
    	父类(静态变量、静态语句块)
    	子类(静态变量、静态语句块)
    	父类(实例变量、普通语句块)
    	父类(构造函数)
    	子类(实例变量、普通语句块)
    	子类(构造函数)
    

    反射

    每个类都有一个Class对象,包含了与类有关的信息。当编译一个新类时,会产生一个同名的.class文件,该文件内
    容保存着Class对象。类加载相当于 Class 对象的加载,类在第一次使用时才动态加载到 JVM 中。也可以使用
    Class.forName("com.mysql.jdbc.Driver") 这种方式来控制类的加载,该方法会返回一个 Class 对象。
    反射可以提供运行时的类信息,并且这个类可以在运行时才加载进来,甚至在编译时期该类的 .class 不存在也可以加
    载进来。
    

    异常

  • 相关阅读:
    多测师讲解html _伪类选择器17_高级讲师肖sir
    多测师讲解html _后代选择器16_高级讲师肖sir
    多测师讲解html _组合选择器_高级讲师肖sir
    多测师讲解html _标签选择器14_高级讲师肖sir
    前端 HTML form表单标签 input标签 type属性 重置按钮 reset
    前端 HTML form表单标签 textarea标签 多行文本
    前端 HTML form表单标签 input标签 type属性 file 上传文件
    前端 HTML form表单标签 input标签 type属性 radio 单选框
    前端 HTML form表单标签 input标签 type属性 checkbox 多选框
    前端 HTML form表单目录
  • 原文地址:https://www.cnblogs.com/yzhengy/p/13214337.html
Copyright © 2011-2022 走看看