Java常见问答题及答案2 --JAVA 小结

本文深入讲解Java的基础知识点,包括基本数据类型与包装类的区别、运算符的使用规则、集合的概念及其实现原理、多态的实现方式等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。八个基本数据类型和包装类
                   byte Byte 1         char Character 2       short Short 2          int Integer 4
                   long Long 8         float Float  4            double Double 8        boolean Boolean 1位
2.int和Integer有什么区别
                   int是基本数据类型,integer是包装类
                   int直接存储在栈中  integer的引用存储在栈中 对象在堆
                   int默认赋值为0  integer默认赋值为null   可以区分赋值为0和未赋值
3.&和&&的区别?
    &和&&都可以进行与运算
    &可以进行位运算(当两边的数值都是数值时)
    &&可以进行短路运算  即当&&的左边位false时  将不会进行右边的判断
4.JAVA中有没有goto
    有 但是是作为保留字  所谓保留字即目前没有加入关键字进行使用  但不排除将来不使用
    类似的还有  const var outer operater rest valueOf
5.byte i=1;
A.i=i+1;
B.i++;
C.++i;
哪个会报错?为什么?
    A会报错  进行i+1运算时  小转大  自动转  在赋值的时候 大转小  需要强转
    而i++ 即为 i = (byte)(i+1)
    ++i同上
6.System.out.println(1>2?1.0:2);  输出的结果是?
    2.0
    三目运算的false执行项类型总是大于等于TRUE执行项
7.写一个冒泡排序
    核心代码(从小到大排序):
        for(int i=1;i<n;i++){
            for(int j=1;j<=n-i;j++){
                if(a[j-1]>a[j]){
                    t=a[j];
                    a[j]=a[j-1];
                    a[j-1]=t;
                }
            }
        }
8.jdk1.5以后的新特性?
    1. 集合
    世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合
    有人想有可以自动扩展的数组,所以有了List 
                ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。
                LinkedList(): 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。

    有的人想有没有重复的数组,所以有了set 
                HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快
                TreeSet :TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。

    有人想有自动排序的组数,所以有了TreeSet,TreeList,Tree** 

    而几乎有有的集合都是基于数组来实现的. 
    因为集合是对数组做的封装,所以,数组永远比任何一个集合要快 

    但任何一个集合,比数组提供的功能要多 

    一:数组声明了它容纳的元素的类型,而集合不声明。这是由于集合以object形式来存储它们的元素。 

    二:一个数组实例具有固定的大小,不能伸缩。集合则可根据需要动态改变大小。 

    三:数组是一种可读/可写数据结构---没有办法创建一个只读数组。然而可以使用集合提供的ReadOnly方法,以只读方式来使用集合。该方法将返回一个集合的只读版本。
        集合  list  map  set   
        java中的数组固定大小  集合不固定大小
        java的集合只能存放引用类型  不能存放基本数据类型

9.char能不能存一个汉字?为什么
    可以  java中char是采用unicode编码 的 一个char占用两个字节 而一个汉字也是占两个字节
10.jvm jre jdk分别是什么?
    jvm java虚拟机         
    jre java运行环境     包含jvm(bin) 及相关类库(lib)
    jdk java开发工具包   包含jre以及java开发工具               开发程序  编译生成.class文件(计算机只能识别机器指令)
11.数组的长度length属性还是方法?字符串的长度?
    数组中为属性    字符串中为方法
12.switch后面可以接什么类型
    byte  char int enum short
    jdk1.7之后  还支持String
13.构造函数的要求 能否重写重载?作用
    没有返回值 只在对象被创建的时候执行一次  构造函数之间的调用通过this  一般方法通过直接调用或者对象调用
    不能重写  可以重载(因为构造函数可以有多个   析构函数不能被重载 因为析构函数只能有一个 且不能带参数)
    作用:给创建的对象一个标识符
          给对象数据成员开辟内存
          给对象的数据成员赋初始值
14.重载与重写的区别
    重载是在同一个类之间内进行(编译时多态)
        参数的个数 类型 排列顺序不同   方法名相同  (返回类型不做为重载的条件)
    重写是在子类中进行(运行时多态)
        方法名  参数个数排列  类型相同  方法体不同
15.this和super的区别
    this()  是在同一类中 构造函数之间相互调用使用  且必须在第一行 与super()不可同时使用
    super() 是子类构造函数在调用父类的构造函数时使用  而且必须在函数的第一行
    this       时自身的一个对象 代表对象本身 相当于指向对象的一个指针
              用法主要分为三种:
                          普通的对象引用 相当于引用对象本身
                          用于方法中区分形参和对象成员
                          在构造函数中堆其他构造函数的引用
    super     相当于是指向自己父类的一个指针(离自己最近的一个父类)
              用法主要有三种:
                          普通的对象引用  相当于引用父类
                          用于区分子类中与父类的同名成员
                          用于构造函数使用父类
16.能否写一个类继承String类,为什么
    不能  因为String类是final类  不能被继承
17.java中包,类,接口,方法,属性,常量命名规范分别是?
    用英文 不要用汉语拼音  不要出现汉字
    包:全小写  中间用点隔开 一般将公司的域名反转  如:www.baidu.com     com.baidu
    类:驼峰命名  单词首字母大写(多个单词也一样)  不能出现下划线等特殊字符
    接口:与类名一致
    方法:首单词全部小写 后面的首字母大写  不出现特殊字符 不用下划线隔开
    属性:与方法名一致
    常量:全大写 如有多个单词  中间则用下划线隔开
18.抽象类和接口的区别
    抽象类是对对象根源的抽象  即表达的是是什么
    接口是对动作的抽象  即表达的是做什么
        两者均不能实力化 抽象类要被继承  接口要被类实现
    接口只能 做方法的声明  抽象类既可以做声明 也可做方法的实现
    继承抽象类  就要实现其中的所有抽象方法 否则该子类必须定义为抽象类  接口也一样
    抽象类中可没有抽象方法  接口中方法必须是抽象的
    接口可以多继承  类只能单继承
19.多态实现的方式有哪些
    三要素:有继承  有重写  有父类对子类对象的引用
    重写 重载
20.JAVA运算符顺序规则是?类型提升规则是、
    运算符分类    结合顺序    运算符
分隔符        左结合    .    []     ( )     ;      ,
一元运算符    右结合    !  ++     --     -   ~
算术运算符
移位运算符    左结合    *     /      %    +     -      <<   >>   >>>
关系运算符    左结合    <     >     <=   >=   instanceof(Java 特有)   = =  !=
逻辑运算符    左结合    ! &&  ||  ~  &  |  ^
三目运算符    右结合    布尔表达式?表达式1:表达式2
赋值运算符    右结合    =  *=     /=  %=   +=   -=    <<= >>= >>>=  &=  *=  |=
    类型提升规则:
            表达式求值的时候 short char byte  在进行运算的时候自动提升为int
            运算中含有 long float double 时 运算结果自动转为相应的类型
21.java的源代码后辍名是?编译后的后辍名?
    .java .class
22.javac,java,javah 分别有什么用
    javac 编译程序
    java  运行
    javah 生成c头文件
23.java算2的10次方最快的方法是
    2<<10;
24.静态块的作用是?
    初始化 随着类的加载被执行 执行顺序(静态代码块 --> main主函数 --> 构造代码块 --> 构造函数 )
25.native,abstract,static,final哪些关键字可以作用在一起,
   谈谈你对native理解
           native 也是一个关键字  由于java跨平台的特性  所以其对底层的作用很少 
                  但是有时候又必须用到底层的调用  而native结合JNI的使用  可以很好的解决这个问题
           使用:
               1  在类中写native修饰的方法
               2  (编译类)生成有文件(javah)
               3  写外部文件  c/c++
               4  将外部文件编译生成.dll文件
               5  类中加载.dll文件
           abstract  抽象
           static  静态



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值