java基础第二篇

作者: Mr_欢先生 | 来源:发表于2017-09-23 20:57 被阅读63次
    • 1.一个Java文件可以有多个类,但是只能有一个public 类
    • 2.&&&区别:
      • &&&都可以作为与逻辑与运算符,但是&&有短路的功能。例如if(3>5 && i--)这个判断语句时,i--不会被执行,但是如果是if(3>5 & i--) 会执行i--.
      • &还可以作为位运算符。
    • 3.String类型和基本数据类型的区别
      • Java八大基本数据类型:
        整型: byte short int long
        浮点: float double
        逻辑:boolean
        字符: char
      • String 是个对象,是引用类型。
      • 基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为
    • 4.==equals的区别:
      • == 这个操作符是专门比较两个变量的值是否相等。也就是比较变量对应内存中所存储的数值是否是否相等
      • 比较引用类型时: == 和 equals(默认)都是比较它们的引用地址是否相等
        (引用类型进行比较的时候想要比较它们的值必须要重写 equals 方法)
        而字符串之所以可以使用 equals 去比较两个字符串的值,是因为 String 中默认已经重写了 equals 方法。
      • String a = new String("xiaoming");String b = new String("xiaoming");这两个变量分别指向一个对象,这是两个不同的变量,所指向的首地址是不同的(a,b中存的数值是不同的),但是内容是相同的所以:a == b将返回false,a.equals(b)将返回true;
      • 如果一个类没有自己定义equals方法,它默认的方法是从Object类继承的。而Object类的equals实现代码:boolean equals(Object o){ return this == o; } 所以这时候使用==equals结果是相同的,必须自己覆盖equals方法;
    • 5.静态变量和实例变量的区别
      • 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
    public class Test11 {  
        public static int staticVar = 0;  
        public int instanceVar = 0;  
      
        public Test11() {  
            staticVar++;  
            instanceVar++;  
            System.out.println("staticVar=" + staticVar + ",instanceVar="  
                    + instanceVar);  
        }  
      
        public static void main(String[] args) {  
            Test11 test = new Test11();  
            Test11 test1 = new Test11();  
            Test11 test2 = new Test11();  
        }  
    }  
    

    执行结果:

    staticVar=1,instanceVar=1  
    staticVar=2,instanceVar=1  
    staticVar=3,instanceVar=1  
    
    • 6. Integerint的区别
      • int是基本数据类型 Integer是其包装类。
      • int的默认值为0,而Integer的默认值为null。既Integer可以区分出未赋值和0的区别。
    • 7.作用域 public,private ,protected,不写时的区别
    public 当前类 同一package包 子孙类 其他package
    public
    protected
    private
    friendly
    • 8.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
      • Overload 是重载:方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。
      • Override是重写:父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写.

    1.重写必须继承,重载不用。
    2.重写的方法名,参数数目相同,参数类型相同,重载的方法名相同,参数列表不同。
    3.重写的方法修饰符大于等于父类的方法,重载和修饰符无关。
    4.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常.

    • 9.abstract class 和 interface区别
      • 1、abstract class 本质是类,用abstract修饰类,而interface是接口,将class替换为interface
      • 2、abstract class可以有构造方法,interface不能有
      • 3、abstract class中可以包含普通变量,interface所有的变量都是final static的
      • 4、abstract class中可以包含普通方法,interface中所有的方法都是抽象的。
      • 5、abstract class中除抽象方法不可以是private修饰符外,其它成员任意;而interface中所有成员的修饰符都为public
      • 6、abstract class可以继承一个类实现多个接口,interface只能继承接口

    相关文章

      网友评论

      • 简_笑:重写时,参数个数和返回值类型不是还要相等吗?我只是记得这样
        简_笑: @Mr_欢先生 哦,也就是说object是个特例?那父类的返回值类型要是string,那他的子类返回值类型除了string,还有吗
        Mr_欢先生: @没心没肺的我
        重写时:方法名、参数个数和参数类型 都必须相同。jdk1.5以后,返回值类型可以与父类相同,也可以与父类不同,但是要求返回值类型是父类的子类。如: 父类的返回值类型是Object类,子类的返回值可以是Object类的子类比如String
      • 司鑫:== 和 equals :
        1. 比较基本类型时: == 是比较它们的值是否相等
        2. 比较引用类型时: == 和 equals(默认)都是比较它们的引用地址是否相等
        (引用类型进行比较的时候想要比较它们的值必须要重写 equals 方法)
        而字符串之所以可以使用 equals 去比较两个字符串的值,是因为 String 中默认已经重写了 equals 方法。
        Mr_欢先生: @Acey 很清晰,我去完善笔记

      本文标题:java基础第二篇

      本文链接:https://www.haomeiwen.com/subject/jbwcextx.html