day01_Object类、常用API每日作业卷

基础题

练习一:Object类equals方法

一、简述String类中的equals方法与Object类中的equals方法的不同点。

String类中的equals方法是用来判断两个对象的内容是否相同.
Object类中的equals方法是用来判断两个对象是否是同一个对象,所谓同一个对象就是内存中的同一块存储空间.地址值是否相同

练习二:Object类的toString方法

二、不运行代码,直接说出打印结果,并解释原因。

public class ToStringTest{
    static int i = 1;
    public static void main(String args[]){
        System.out.println("love " + new ToStringTest());//love java
        ToStringTest a = new ToStringTest();
        a.i++;
        System.out.println("me " + a.i);//me 2
    }
    public String toString(){
        System.out.print("I ");//I
        return "java ";
    }
}

运行结果: I love java me 2
原因 : 先加载static静态变量, 执行main方法,第一句为输出语句,并在输出语句中new了此类对象,先创建本类对象,重写了toString方法,将toString方法的打印输出,然后返回java,在执行main方法的第一行输出,

练习三:Object类equals方法

三、看下列程序,不运行说结果,写出答案后,并在IntelliJ IDEA中运行看看自己给的答案与运行结果是否正确,并分析原因。

	(1)
		String s1 = new String("abc");
		String s2 = "abc";
		System.out.println(s1 == s2);     	//false 内存位置不同
		System.out.println(s1.equals(s2));     	//true  内容相同
	(2)
		String s1 = "abc";
      		String s2 = "abc";
		System.out.println(s1 == s2);     	//true  存储位置相同
		System.out.println(s1.equals(s2)); 	//true 内容相同
	(3)
		String s1 = "a" + "b" + "c";
      		String s2 = "abc";
		System.out.println(s1 == s2);    		 //true
		System.out.println(s1.equals(s2));	 //true
	(4)
		String s1 = "ab";
     		String s2 = "abc";
     		String s3 = s1 + "c";
		System.out.println(s3 == s2);     	//false
      		System.out.println(s3.equals(s2));   	//true

练习四:StringBuilder类与String类的区别

四、简述StringBuilder类与String类的区别。

答: String类的对象内容不可改变,当进行字符串拼接时,总会在内存中创建一个新的对象,所以经常改变内容的字符串最好不要用String. 因为每次生成对象都会对系统性能产生影响
StringBuilder又称为可变字符序列,是jdk5之后添加的一个类,类似于string的字符缓冲区,通过某些方法调用可以改变该序列的长度和内容. 既它是一个容器,容器中可以装很多字符串,并且能够对其中的字符串进行各种操作.它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加新内容,StringBuilder会自动维护数组的扩容

练习五:Date类的使用

五、请用代码实现:获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        //获取当前时间对象
        Date date = new Date();
        //创建SimpleDateFormat对象,转换为指定格式
        SimpleDateFormat sd = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //调用sd的format(Date date)方法,传入date,接收返回的字符串
        String format = sd.format(date);
        //打印
        System.out.println(format);

    }
}

练习六:DateFormat类方法的使用

六、使用SimpleDateFormat类,把2018-03-04转换为2018年03月04日。

import sun.java2d.pipe.SpanIterator;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) throws ParseException {
        //创建SimpleDateFormat类,指定格式
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        //调用sd的parse(String str)方法传入时间
        Date parse = sd.parse("2020-09-08");
        //创建日期格式对象
        SimpleDateFormat sd2 = new SimpleDateFormat("yyyy年MM月dd日");
        //获取转换完的日期
        String format = sd2.format(parse);
        System.out.println(format);
    }
}

练习七:Calendar类方法的使用

七、用程序判断2020年9月8日是星期几。

import java.util.Calendar;

public class Test {
    public static void main(String[] args) {
        //创建Calendar对象
        Calendar c = Calendar.getInstance();
        //将日期字段给到Calendar
        c.set(2020,8,8);
        //设置年
        int year = c.get(Calendar.YEAR);
        //设置月
        int month = c.get(Calendar.MONTH)+1;
        //设置日
        int date = c.get(Calendar.DATE);
        //设置星期
        char week = getWeek(c.get(Calendar.DAY_OF_WEEK));

        //输出结果
        System.out.println(year+"年"+month+"月"+date+"日"+"是星期"+week);
    }

    //定义方法getWeek 获取星期汉字
    public static char getWeek(int a){
        char[] c = {' ','日','一','二','三','四','五','六'};
        return c[a];
    }
}


扩展题

练习八:System类arraycopy方法的使用

八、现有一个字符数组{‘i’,‘t’,‘c’,‘a’,‘s’,‘a’},请使用System类中的arraycopy()方法在控制台输出“itcast”。(提示:将[1]号数组元素复制到最后位置并覆盖原有元素。)

public class Test {
    public static void main(String[] args) {
        char[] a = {'i','t','c','a','s','a'};
        //将a数组中的第2个元素复制到最后位置
        System.arraycopy(a,1,a,5,1);
        //遍历数组,在控制台输出
        for (char c1 :a){
            System.out.print(c1);
        }
    }
}


练习九:StringBuilder类的使用

九、请使用代码实现

分别使用String的 += 和StringBuilder的append方法对字符串做100000次拼接,计算String拼接100000次花费时间与StringBuilder拼接100000次所花费时间并打印。



public class Test {
    public static void main(String[] args) {
        //使用system的currentTimeMillis()方法获取当前操作系统的毫秒值
        long start = System.currentTimeMillis();
        //测试性能的代码
//        testString();//花费时间21088
        testStringBuilder();//花费时间8
        //获取结束的毫秒数
        long end = System.currentTimeMillis();
        System.out.println("花费时间"+(end-start));
    }

    //testString
    public static void testString() {
        //定义字符串
        String str = "hello";
        //循环
        for (int i = 0; i < 100000; i++) {
            str += "word";
        }
    }

    //写一个静态方法:testStringBuilder(),在方法中
    public static void testStringBuilder() {
        //创建一个StringBuilder对象sb,初始内容与testString()中的字符串相同
        StringBuilder sb = new StringBuilder("hello");
        //写一个循环100000次for循环,在循环中写上
        for (int i = 0; i < 100000; i++) {
            //调用sb.append()方法,传入的内容与testString()方法中+=后面的内容一样
            sb.append("world");

        }
        //循环结束后调用sb.toString方法转换为字符串
        String newStr = sb.toString();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值