java练习题

一、java基础
1、JDK和JRE的区别:
JDK(Java Development Kit)是java的开发环境,包括java开发工具、java基础类库和java运行环境(jre)。
JRE(Java Runtime Enviroment)是java的运行环境,包括JVM和java核心类库。

JDK安装目录下主要文件夹及文件作用:
(1)bin文件夹:提供JDK工具程序:包括javac、java、javadoc等可执行程序。
(2)jre文件夹:存放java运行环境文件。
(3)lib文件夹:存放java的类库文件。
(4)include文件夹:存放本地方法的文件。

2、==和equals()的区别:
==:如果比较的是原始数据类型,则比较的是它们的数值。如果比较的是引用数据类型,则比较的是它们的物理地址(在堆内存中的地址)。
equals():使用equals方法进行比较,取决于equals方法的具体实现。所有的类都继承Object类,在Object类中equals方法比较的是物理地址。而对于某些重写了equals和hashCode方法的类(如:String),比较的是数值。

3、如果两个对象的hashCode()相同,equals()是否一定为true?

4、final的作用?
final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的属性不可变。

5、比较String str1=“hello’’ 和 String str2=new String(“hello”)

String str1="hello";
String str2=new String("hello");
System.out.println(str1==str2);   //false
System.out.println(str1.equals(str2));	//true

(1)在栈中创建引用str1,然后在字符串常量池中找是否有“hello”。有,则直接将“hello”在字符串常量池中的地址返回给str1。没有,则先在字符串常量池中添加“hello”,并返回地址给str1。
(2)在栈中创建引用str2,并在堆中开辟一块空间。然后在字符串常量池中找是否有“hello”。有,则直接将“hello”在字符串常量池中的地址返回给堆内存。没有,就先添加“hello”。

区别:str1保存的是“hello”在常量池中的地址,而str2保存的是 堆保存“hello”在常量池中的地址 的地址。

6、如何将字符串反转?
public class ReverseString {

//非递归方法
public static String reverse1(String name){
    if(name==null||name.length()==1)
        return name;

    //将字符串转换成字符数组
    char[] arr=name.toCharArray();

    int start=0;
    int end=arr.length-1;
    while(start<end){
        char temp=arr[start];
        arr[start]=arr[end];
        arr[end]=temp;

        start++;
        end--;
    }

    return new String(arr);
}

//递归方法
public static String reverse2(String name){
    if(name==null||name.length()==1)
        return name;

    //1号位置开始的子串加上0号位置的字符,递归子串
    return reverse2(name.substring(1))+name.charAt(0);
}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值