java基础(面试篇)

1.JDK 和 JRE 有什么区别?       

        1.1.JRE:Java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。

       1.2. JDK:Java Development Kit(java开发工具包)。即java语言编写的程序所需的开发工具包。

        1.3.JDK包含了JRE,同时还包括java源码的编译器javac、监控工具jconsole、分析工具jvisualvm等。
 

2.== 和 equals 的区别是什么?

        2.1.==:比较两个对象的地址值

        2.2.equals:如果对象没有重写object方法,效果和==相同,如果重写了,就按照重写的方法比较。

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

        不对,两个对象的 hashCode()相同,equals()不一定 true

4.final 在 java 中有什么作用?

        4.1.final修饰类:表示该类不能被继承,被final修饰的类所有成员方法都将被隐式修饰为final方法。

        4.2.修饰方法:表示方法不能被重写

        4.3.修饰变量:表示变量只能一次复制以后值不能被修改(常量),本质: final修饰的变量会指向一块固定的内存, 这块内存中的值不能改变.引用类型变量所指向的对象之所以可以修改, 是因为引用变量不是直接指向对象的数据, 而是指向对象的引用的

5.java 中的 Math.round(-1.5) 等于多少?

        round方法:先将这个数加上0.5然后在像下取整.等于-1

6.String 属于基础的数据类型吗?

        String不是基本的数据类型,是final修饰的java类,java中的基本类型一共有8个:byte,char,int,long,short,float,double,boolean

7.java 中操作字符串都有哪些类?它们之间有什么区别?

        7.1.String,StringBuffer,StringBuilder

        7.2.从类的继承关系上来开的话,String和StringBuffer,StringBuilder是没有任何关系的,但是StringBuffer和StringBuilder的继承关系时一样的.

        7.3.这三个类存储的本质都是一个char类型数组.不同的是String类型的数组长度是3,而另外两个数组的长度都是19且默认值为0.

        7.4.String : final修饰,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。

        7.5.在StringBuffer类中的方法绝大部分都加了synchronized关键字,而StringBuilder类中则没有,所以说StringBuffer类是线程安全的,而StringBuilder则不是线程安全的.

8.String str="i"与 String str=new String(“i”)一样吗?

        不一样,使用String str=“i”,java虚拟机会把它分配到常量池中,而 String str=new String(“i”)创建了一个对象,会被分到堆内存中。

        Java为了避免产生大量的String对象,设计了一个字符串常量池。工作原理是这样的,创建一个字符串时,JVM首先为检查字符串常量池中是否有值相等的字符串,如果有,则不再创建,直接返回该字符串的引用地址,若没有,则创建,然后放到字符串常量池中,并返回新创建的字符串的引用地址。

        “new Object()”会反映到java堆中,在java堆上创建一个Object类型的实例数据值的结构化内存

9.如何将字符串反转?

        9.1.StringBuilder的reverse()方法,最简单

        9.2.toCharArray()使用字符串数组,实现从尾部开始逐个逆序放入字符串

        9.3.使用String的CharAt方法,使用String的CharAt方法取出字符串中的各个字符,然后插入到字符串中,调用StringBuilder的insert()方法进行操作。

10.String 类的常用方法都有那些?

  • indexOf():返回指定字符的索引。
  • charAt():返回指定索引处的字符。
  • replace():字符串替换。
  • trim():去除字符串两端空白。
  • split():分割字符串,返回一个分割后的字符串数组。
  • getBytes():返回字符串的 byte 类型数组。
  • length():返回字符串长度。
  • toLowerCase():将字符串转成小写字母。
  • toUpperCase():将字符串转成大写字符。
  • substring():截取字符串。
  • equals():字符串比较。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值