zoukankan      html  css  js  c++  java
  • 【JAVA】基础知识_常见问题1

    1、一个“.java”的源文件中是否可以包含多个类

    当然可以包含多个类,但是用public修饰的类只能有一个,并且类的名字要与文件的名字一致。

    2、&和&&有什么区别

    这个问题很多人理解的不是很透彻。

    首先:&和&&都是逻辑与运算符,当运算符两边的表达式都为true时,整个运算结果为true,反之为false。但是&和&&也略有不同,&&为短路与,什么意思哪,比如:if(null != str && “”.equals.(str)),当str是null时,就不会执行第二个条件。如果用&,还是会执行第二个条件。

    其次:&还可以表示位运算符,当&两边的表达式不是boolean类型时,&表示按位与操作,0x111 & 0x01 结果为0x01,用这样的方式来判断一个数的奇偶性是不是不错啊,当然这只是一个实例,还有别的用法,可根据实际情况而定。

    3、switch语句能否作用在byte上,能否作用在long上,能否作用在String上

    在switch(expr1)中,expr1只能是一个整数表达式或枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于byte、short、char可以隐含装换为int,所以这些类型以及这些类型的包装类型也是可以的。显然long、String类型都不符合switch的语法规定,并且不能被隐式转换为int类型,因此不能用于switch语句中。

    4、char类型变量中能否存储一个中文汉

    char类型变量是用来存储Unicode编码字符的,Unicode编码字符集中包含了汉字,因此char类型变量当然可以用来存储汉字。但是如果是特殊汉字,既没有包含在Unicode编码字符集中,那么这个char就无法保存这个特殊汉字。

    注意:Unicode编码占用两个字节,所以char类型变量也是占用两个字节。

    5、使用final关键字修饰一个变量时,时引用不能变还是还是引用的对象不能变

    使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向对象中的内容还是可以改变的。

    6、“==”和equals方法究竟有什么区别

    ==操作符是用于两个变量的值是否相等,也就是比较变量所对应内存中的数值是否相等。比较基本数据类型或两个引用变量是否相等,应该用==操作符。

    如果一个变量指向的数据是一个对象类型,那么此时是涉及了两个内存,对象本身占用了一块内存(堆内存),变量也占用了一块内存,存放堆内存的首地址。对于两个引用类型变量用==比较,表示两个变量是否指向同一块堆内存,比较的是两个变量存储的地址是否相等。

    equals方法用于比较两个真实独立对象的内容是否相同,如下:

    String a = new String(“abc”);

    String b = new String(“abc”);

    想要比较a和b中的字符串是否一致,就要用:a.equals(b)返回结果会是true;

    此时如果用a==b来比较,那返回的结果就会是false,因为a和b是两个不一样的对象,地址是完全不一样的。

    7、静态变量和实例变量有什么区别

    语法定义区别:静态变前面要加static关键字,实例变量前不加。

    程序运行区别:实例变量本质是属于某个对象的属性,必须创建的实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个具体的实例对象,而是属于类,所以也称类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

    总之,实例变量必须创建对象后才可以通过这个对象来使用,而静态变量则可以直接使用类名来引用。

    8、一个static方法内部是否可以发出对非static方法的调用

    不可以。

    非static方法是与对象关联在一起的,必须创建一个具体对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。当一个static方法内部发出对非static方法调用时,那这个非static方法到底关联的是哪个对象那?不知道到,理论上走不通。因此一个static方法内部是不可以发出对非static方法的调用。

    9、Integer与int的区别

    int是Java提供的8钟基本数据类型之一。Java为每个基本数据类型都提供了封装类,Integer是Java为int提供的封装类,int的默认值为0,Integer的默认值为null。

    10、说说public、private、protected作用域以及不写是的区别

    具体作用域见下表。如果不加修饰符则表示friendly。

    作用域

    当前类

    同一包

    子孙类

    其他包

    public

    OK

    OK

    OK

    OK

    protected

    OK

    OK

    OK

    NO

    friendly

    OK

    OK

    NO

    NO

    private

    OK

    NO

    NO

    NO

  • 相关阅读:
    053532
    053531
    053530
    053529
    053528
    RTSP和RTMP的区别是什么?
    RTSP、RTMP和HTTP协议的区别
    在C#中实现视频播放器
    wpf下基于opencv实现视频播放器
    C#实现视频播放器(Vlc.DotNet)
  • 原文地址:https://www.cnblogs.com/shidian/p/7905398.html
Copyright © 2011-2022 走看看