百战程序员7-常用类
作者:互联网
1、为什么需要包装类?包装类的作用是?
我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
另外,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。
Java中基本数据类型与包装类型有:
2、将字符串"123"转化成基本类型数字的方式有哪些?
Integer.parseInt("123")
3、自动装箱和自动拆箱指的是?举例说明。
装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
//自动装箱 2 Integer total = 99; 3 4 //自定拆箱 5 int totalprim = total;
4、【上机】完成老师课堂上Integer的测试,并自己写Double类的测试代码
5、为什么String类被称为不可变字符序列?从String类的源代码分析,给出解释。
字符串是常量,String对象是不可变的,所以可以共享
String类的底层是char类型的 数组value,这个数组用了final
6、【上机】String类的equals方法跟Object的equals方法什么关系? 并详细阅读
String类的equals方法源代码,分析它的内部流程。
7、String类的trim()方法是什么作用?
返回一个去掉字符串前后空格的字符串
8、"hamburger".substring(4, 8) 返回的结果是?
urge
9、【上机】分析下面代码的结果,并画出内存结构图,针对每个打印的结果给出文字
解释。
String s = "abc"; String ss = "abc"; String s3 = "abc"+"def"; //此处编译器做了优化! String s4 = "abcdef"; String s5 = ss+"def"; String s2 = new String("abc"); System.out.println(s==ss); System.out.println(s3==s4); System.out.println(s4==s5); System.out.println(s4.equals(s5)); |
System.out.println(s==ss); // true // 直接比较地址是否相同
System.out.println(s3==s4); // true
System.out.println(s4==s5); // false
// 此处根据String中equals源码可以看出,先比较内存地址是否相同,
// 如果内存地址相同,直接返回true,
// 如果内存地址不同,进行判断是否是String类型,
// 如果是String类型,进行向下类型转换,转换成String
// 然后变改成char类型数组,比较两个数对应上的数值是否相同,
// 如果相同返回true,如果不同返回false
System.out.println(s4.equals(s5)); // true String底层结构是char类型数组
10、【上机】练习String类的常用方法
12、StringBuffer和StringBuilder的联系是?区别是?
三者在执行速度方面的比较:StringBuilder > StringBuffer > String
StringBuilder:线程非安全的
StringBuffer:线程安全的
13、如下的代码会造成什么后果?运行期间会产生多少个对象? 使用StringBuilder修
改这段代码。
String s = ""; for(int i=0;i<10000;i++){ s +=i; } |
10001个对象,会降低效率
StringBuilder s = new StringBuilder();
14、计算机中的时间是如何表示的?
15、System.currentTimeMillis()表示什么意思?
返回以毫秒为单位的当前时间
16、Date d = new Date()表示的是当前时间吗?
是
17、【上机】我们使用SimpleDateFormat类来实现时间跟字符串的转化。常用那两
个方法?并写出代码,举例说明
Date date = new Date();
//格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//日期转字符串
String date2 = simpleDateFormat.format(date);
//字符串转日期
Date date3 = simpleDateFormat.parse("2019-02-02");
18、将1990年3月3日通过Calendar来表示,并得出这天是该年的第一天?将该日
期增加35天,是哪一天?使用代码来说明。
Calendar calendar = new GregorianCalendar(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); calendar.setTime(simpleDateFormat.parse("1990-3-3")); System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); calendar.add(Calendar.DATE, 35); System.out.println(calendar.get(Calendar.YEAR)+"年"+ (calendar.get(Calendar.MONTH)+1)+"月"+ calendar.get(Calendar.DATE)+"号");
19、【上机】写代码测试Date/SimpleDateFormat/Calendar的用法。
public static void main(String[] args){ // Date的用法 Date date1 = new Date(); System.out.println(date1.toString()); // SimpleDateFormat的用法 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String daytime = sdf.format(new Date()); // Calendar的用法 GregorianCalendar calendar = new GregorianCalendar(); calendar.set(Calendar.YEAR,2009); }
20、【上机】模仿老师的写法,完成可视化日历程序的开发。
package com.test; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("请输入日期(格式为:2017-3-3):"); Scanner sc = new Scanner(System.in); String date = sc.nextLine(); String[] daytime = date.split("-"); int year = Integer.parseInt(daytime[0]); int month = Integer.parseInt(daytime[1]); int day = Integer.parseInt(daytime[2]) GregorianCalendar calendar = new GregorianCalendar(year, month-1, day); calendar.set(Calendar.DATE, 1); // week:1-7 日一二三四五六 int week = calendar.get(Calendar.DAY_OF_WEEK); System.out.println("日\t一\t二\t三\t四\t五\t六"); for(int i = 0; i < week-1; i++){ System.out.print("\t"); } int maxDate = calendar.getActualMaximum(Calendar.DATE); for(int i = 1; i <= maxDate; i++){ StringBuilder sb = new StringBuilder(); if(calendar.get(Calendar.DATE) == day){ sb.append(calendar.get(Calendar.DATE)+"*\t"); }else{ sb.append(calendar.get(Calendar.DATE)+"\t"); } System.out.print(sb); if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){ System.out.print("\n"); } calendar.add(Calendar.DATE, 1); } } }
21、File类能代表一个目录吗?
可以
22、File类的方法mkdir跟mkdirs,有什么区别?
23、使用File类模拟实现DOS的dir和dir/s命令
24、【上机】使用递归算法,根据老师的树状结构代码,完整展示一个目录树
25、【上机】手动定义一个枚举,表示十二个月的英文月份。
public enum Month{ JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST, SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER }
- 【上机】switch语句中的表达式结果可以是枚举吗? 模仿课堂代码,写一个例子
说明。
可以。
第八章 容器
标签:百战,常用,String,System,程序员,new,Calendar,calendar,out 来源: https://www.cnblogs.com/lshaoyu/p/10451257.html