java se面试 未完待续~~~

1、jdk jre jvm 区别
  jvm:jvm是java虚拟机,java程序需要在jvm上运行是java实现跨平台性的重要依据 
  jre:java运行时环境的简称,其中包括一些java核心的类库与jvm
  jdk:是提供给开发人员使用的,包括jvm,jre
2.什么是跨平台性
    跨平台性是只需要写一份代码,编译之后由jvm在不同的平台上运行
3.跨平台性实现的原理
    开发人员编写的.java文件 经过编译之后形成 .class文件。最后交由不同系统上的jvm加载运行
4.java语言有什么特点
    简单易学,面向对象,跨平台性,健壮性,网络编程,多线程,安全
5.什么是字节码
    字节码是开发人员编写的.java文件,由jvm编译后形成的class文件 ,此文件只面向jvm使用,不面向其他的系统
6.文件和类的关系
    一个文件中可以存在多个类,但只能有一个类被声明为public的,且这个类的类名必须与文件名保持一致
基础语法
  数据类型
    1、java包括哪些数据类型
    包括基本数据类型和引用数据类型
    基本数据类型(8种)byte short int long char float double boolean
    引用数据类型(4种)类,接口,枚举,数组

    2.switch是否可以作用在byte上面,能否作用在long上面,能否作用在String上面
    在jdk1.5之前,只支持byte,short,int,char。之后支持枚举 jdk1.7支持字符串(String)
    3.最有效的方式计算2*8
    System.out.println(2<<3);
    4.Math.round(11.5)等于多少 Math.round(-11.5)等于多少
    API中 round一共有两个重载方法 一个double类型的参数作为形参返回值为long类型,一个float类型的参数作为形参,返回值为int,
    方法内容是返回最接近的参数,计算方式为参数+0.5向下取挣
    5.float f=3.14;是否正确
    不正确,小数默认是double类型,整数默认是int类型,正确命名方式为 float f=3.14f;  
    6.short s1=1; s1=s1+1;有错吗?short s1=1;s1+=1;有错吗
    

    7.请说明四种权限修饰符以及他们的区别
    public 表示公共的,同一个包可以调用, 可以修饰类 方法和成员变量 同一个包可以调用
    protected  对同一包内的类和所有子类可见,表示受保护的,可以修饰变量方法
    private 便是私有的 只对同一个类可以见 可以修饰变量,方法
    default 缺省 表示默认的,可以修饰类,接口,方法,变量,早同一个包可见

     8.&与&&的区别
    &包括按位与和逻辑与
    按位与是将变量转化成为二进制进行按位与,对0和1进行按位与 
    逻辑与&没有短路,前面判断为false之后后面的也会执行,&&具有短路性,前面判断为false直接结束
    (|)与(||)同理
     关键字
    1.java有没有goto关键字
     有的,但是未使用作为保留字
    2.final有什么作用
     final作为java关键字表示最终的 可以修饰类 方法 属性
     修饰方法 表示此类是最终实现,表示此类是最终实现,不可以被继承
     修饰属性  表示此属性不可更改是场量,初始化时必须赋值
     修饰方法  表示此方法不可以被重写,但是可以重载
    3.final finally finalize区别
     final见二
     finally:出现在try catch中,作为最后处理出现,如果之前catch没有捕获到将会执行finally里面的内容
     finallize是一个方法 属于Object,所有类都直接间接继承Object类,所以基本上所有的类都含有finalize方法
     该方法一般由垃圾回收器来调用,调用 System.gc();时,由垃圾回收器调用finalize()回收垃圾,判断一个对象是否可以回收
    
     


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中,泛型是一种强类型机制,它可以让你在编译时检查类型错误,从而提高代码的安全性和可读性。在使用泛型时,我们经常会遇到父类和子类的泛型转换问题。 首先,我们需要明确一点:子类泛型不能转换成父类泛型。这是因为Java中的泛型是不协变的。例如,如果有一个类A和它的子类B,那么List<A>和List<B>之间是不存在继承关系的。 下面我们来看一个例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 } } ``` 在这个例子中,我们定义了Animal类和它的子类Dog。然后我们定义了两个List,分别是List<Animal>和List<Dog>。如果将List<Dog>赋值给List<Animal>,会出现编译错误。这是因为List<Animal>和List<Dog>之间不存在继承关系。 那么,如果我们想要让子类泛型转换成父类泛型,应该怎么办呢?这时我们可以使用通配符来解决问题。通配符可以表示任意类型,包括父类和子类。例如,我们可以将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 下面我们来看一个使用通配符的例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 List<? extends Animal> list3 = new ArrayList<>(); list3 = list2; // 正确 } } ``` 在这个例子中,我们定义了List<? extends Animal>来表示任意继承自Animal的类型。然后我们将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 总结一下,Java中的泛型是不协变的,子类泛型不能转换成父类泛型。如果需要实现子类泛型转换成父类泛型,可以使用通配符来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᥬ᭄?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值