美文网首页
2021-01-31

2021-01-31

作者: 等我攒够六便士_就去找月亮 | 来源:发表于2021-01-31 20:25 被阅读0次

1.JDK和JRE的区别?

JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。

JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。

2.==和equals的区别?

基本类型:比较的是值是否相同;

引用类型:比较的是引用是否相同;

String str1 = "abc";

String str2 = "abc";

System.out.println(str1==str2);//true

String str3 =newString("abc");

String str4 =newString ("abc");

System.out.println(str3==str4);//false

System.out.println(str3.equals(str4));//true

解析:equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。

eg.

Integer i1 = 100, i2 = 100;

Integer i3 = 1000, i3 = 1000;

System.out.println(i1==i2);//true

System.out.println(i3==i4);//false

解析:在整数的包装类当中,在第一次创建Integer 类的对象的时候,都会首先创建好缓存数组。当需要包装的 值是在IntegerCache数组当中的元素的时候,就会返回数组当中的Integer 对象。JVM 默认就会设置数组的范围为-128 ~ 127 。如下:

public static Integer valueOf(int i) {

    if (i >= IntegerCache.low && i <= IntegerCache.high)

        return IntegerCache.cache[i + (-IntegerCache.low)];

    return new Integer(i);

}

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

final 修饰的类叫最终类,该类不能被继承。

final 修饰的方法不能被重写。

final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

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

    等于 -1,因为在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整,负 0.5 是直接舍弃。

5.String、StringBuffer、StringBuilder的区别?

    String是字符串常量,final修饰;StringBuffer字符串变量(线程安全);StringBuilder 字符串变量(线程不安全).此外StringBuilder和StringBuffer实现原理一样,都是基于数组扩容来实现的.

    StringBuffer和StringBuilder的实现原理一样,其父类都是AbstractStringBuilder.StringBuffer是线程安全的,StringBuilder是JDK 1.5新增的,其功能和StringBuffer类似,但是非线程安全.因此,在没有多线程问题的前提下,使用StringBuilder会取得更好的性能.

6. String str="i"与 String str=new String("i")一样吗?

    不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String("i") 则会被分到堆内存中。

7. 如何将字符串反转?

1)使用 StringBuilder 或者 StringBuffer 的 reverse() 方法。

String str = "abcdefg";

StringBuffer stringBuffer = new StringBuffer(str);

StringBuilder stringBuilder = new StringBuilder(str);

System.out.println(stringBuffer.reverse());

System.out.println(stringBuilder.reverse());

2)使用String对象的toCharArray()方法,将字符串转换为char[]数组,然后逆向遍历并拼接。

String str = "abcdefg";

StringBuilder strNew =new StringBuilder();

char[] chars = str.toCharArray();

for(int i = chars.length -1; i >= 0; i--){

    strNew.append(chars[i]);

}

3)使用String对象的charAt方法逐个获取字符,正向遍历,逆向拼接

String str = "abcdefg";

StringBuilder strNew =new StringBuilder();

for (int i = 0; i < str.length(); i++) {

    strNew.insert(0, str.charAt(i));

}

8.String类的常用方法有哪些?

indexOf():返回指定字符的索引。

charAt():返回指定索引处的字符。

replace():字符串替换。

trim():去除字符串两端空白。

split():分割字符串,返回一个分割后的字符串数组。

getBytes():返回字符串的 byte 类型数组。

length():返回字符串长度。

toLowerCase():将字符串转成小写字母。

toUpperCase():将字符串转成大写字符。

substring():截取字符串。

equals():字符串比较。

9.普通类和抽象类的区别?抽象类可以用final修饰吗?抽象类和接口的区别?

  1)普通类不能有抽象方法,抽象类可以有也可以没有抽象方法,抽象类不能直接实例化,普通类可以。

  2)抽象类不能用final修饰,因为抽象类的定义就是为了被继承。

  3)抽象类和接口的区别:

      抽象类使用extends继承,接口使用implements实现;

      抽象类可以有构造函数,接口不能有;

      抽象类可以有非抽象接口,接口不能有(java8之后可以有了)

      类可以实现多个接口,但是只能继承一个类;

      接口中的方法默认使用public访问修饰符,抽象类中的方法可以任意访问修饰符(抽象方法不能使用private)

相关文章

  • 外国网友脑洞大开的雪雕

    People Who Have Mastered The Art Of Snow 2021-01-31 210词 ...

  • 开发日记(02) - js 异步任务队列

    开发日记(02) - js 异步任务队列 2021-01-31 20:40:22 0️⃣ 问题 ❓ 算是之前项目遗...

  • 2021读书随记第一篇

    读书随记(“抄录”) 2021-01-31 to 2021-05-22 稀缺 我们是如何陷入贫穷与忙碌的。 行为经...

  • 周日 2021-01-31 23:21 - 08:23 阴转雨

    周日 2021-01-31 23:21 - 08:23 阴转雨 08h42m记录闪现的灵感(inspiration...

  • #dairy 91 忙碌周日again

    2021-01-31 周日 晴 雪后,大晴天。 蓝天白天,天气特别的好。 这周平均起床时间9:19比上周晚了25分...

  • 2021-02-01

    2021-01-31(农历腊月十九)日精进第12天 | 没有记录就没有发生 2021年的事业梦想个人目标描述:达成...

  • 2021-01-31 周检视

    【2021-01-31日精进 第257天/1825】表现:9分 一、本周印象最深的事情? 1.注意力决定了你的世...

  • 2021年1月,重启。

    2021-01-31 有了期待和憧憬 2021-01-30 一天与题为伴 2021-01-29 有了竞争,有了对比...

  • 践行五个一 打卡第101天

    2021-01-31 【周岳五个一】#百日践行100/101天 【健身之志】 今日早起第100天 【读一本经】 完...

  • 平衡

    我怎么如此幸运-重生154-戴红霞(2021-01-31) 我怎么如此幸运-平衡 1.我怎么如此幸运意想不到听着这...

网友评论

      本文标题:2021-01-31

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