Java小白入坑问题(一)

1,JDK和JRE的区别?

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

JRE:即Java Runtime Environment,java运行环境,为java提供运行的环境。具体就是JDK包含了JRE,还有java源码的编译器javac,            以及很多java程序调试分析工具。通俗的说就是如果只需要运行安装JRE就可以,如果要编译,则需要JDK。

2,==和equals的区别?

==:

==对于基本类型和引用类型作用是不同的。在基本类型中==表示:值是否相同;在引用类型中:引用是否相同。

String a = "s1";
String b = "s1";
String c = new String("s1");
System.out.printl(a==b);//true
System.out.printl(a==c);//false
System.out.printl(a.equals(b));//true
System.out.printl(a.equals(c));//true

在上面代码中由于a和b指向的是相同的引用,所以结果为true,而new String()方法重新开辟了内存空间,返回false;equals方法比较的一直是值,返回的是true。

equals:

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

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

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

不对,因为在散列表中,hashCode()相同即两个键值对的哈希值相等,然而哈希值相等,不能得出键值对相等。

4,final在Java中有什么作用?

final修饰的类叫最终类,不能被继承;final修饰的方法不能被重写;final修饰的变量是常量,常量必须初始化,且不能被修改。

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

等于-1,因为中间值(0.5)向右取整。

6,String数据基础数据类型吗?

String不属于基础类型,基础类型有byte,short,int,double,long,char,float,boolean,String属于对象。

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

操作字符串的类有:String,StringBuffer,StringBuilder。

String相比于StringBuffer和StringBuilder,String声明是不可变的对象,每次操作都会生成新的对象,然后将指针指向新的对象,而StringBuffer和StringBuilder可以在原数据的基础上进行操作,所以在经常改变字符串内容的情况下不用String。

StringBuffe和StringBuilder 的区别在于StringBuffer是线程安全的,StringBuilder不是线程安全的,但StringBuilder的性能却高于StringBuffer,所以单线程推荐StringBuilder,多线程则推荐StringBuffer。

8,String str="i"和String str = new String("i")一样吗?

不一样,因为内存的分配方式不同,前者java会分配到常量池中,后者会被分配到堆中。

9,如何将字符串反转?

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

10,String类的常用方法有哪些?

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

11,抽象类必须有抽象法法吗?

不需要

12,普通类和抽象类有哪些区别?

普通类不能有抽象方法,抽象类可以有抽象方法。普通类可以实例化,抽象类不能实例化。

13,抽象类能使用final修饰吗?

不能,定义抽象类的意义就是为了让其他类继承,而final修饰的类不能继承,这是矛盾的。

14,接口和抽象类有什么区别?

  • 接口使用implements关键字实现,抽象类使用extends继承
  • 接口不能有构造函数,抽象类可以有
  • 接口不能有main方法,抽象类可以有
  • 接口可以实现多个,抽象类只能继承一个
  • 接口中的方法默认是public修饰的,抽象类可以是任意修饰符修饰

15,java中IO流分为几种?

按照功能分为输入流(input)和输出流(output)

按照类型分为字节流(8位)和字符流(16位)

16,Files常用的方法有哪些?

  • Files.exits() :检测路径是否存在
  • Files.createFile(): 创建文件
  • Files.createDirectory(): 创建文件夹
  • Files.delete() :删除一个文件或目录
  • Files.copy() :复制文件
  • Files.move() :移动文件
  • Files.size() :查看文件个数
  • Files.read() :读取文件
  • Files.write() : 写入文件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值