目录
Java 1.5 版本之前必须手动拆箱装箱,之后可以自动拆箱装箱
2、Math类、Date类、Character类、随机数Random、Calendar类等常用类
4、String类, equals()、compareTo() 等常用的方法
5、StringBuilder、StringBuffer,比较它们的不同,使用它们拼接字符串和变量
6、封装一个工具类StringUtils.java,实现字符串判断空的方法(公共静态方法)
Day4 包装类、数组
从本节开始可以使用idea学习
-
学习8种基本数据的包装类,学习装箱、拆箱,学习包装类常用的方法
-
学习Math类、Date类、Character类、随机数Random、Calendar类等常用类
-
学习数组,二维数组、数组排序、复制数组、Arrays工具类使用
-
学习String类(非常重要)学习他的常用的方法,例如 equals()、compareTo() 等等,多多练习
-
学习StringBuilder、StringBuffer,比较它们的不同,使用它们拼接字符串和变量
-
(选做)封装一个工具类StringUtils.java,实现字符串判断空的方法(公共静态方法)
-
(选做)使用Calendar类打印本月的日历
1、8种基本数据的包装类,装箱、拆箱
Java包装类、装箱和拆箱 (biancheng.net)http://c.biancheng.net/view/6119.html
基本数据类型转换为包装类的过程称为装箱,例如把 int 包装成 Integer 类的对象;包装类变为基本数据类型的过程称为拆箱,例如把 Integer 类的对象重新简化为 int 。
Java 1.5 版本之前必须手动拆箱装箱,之后可以自动拆箱装箱
也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行装箱及拆箱操作
自动拆箱装箱
public class Demo {
public static void main(String[] args) {
int m = 500;
Integer obj = m; // 自动装箱
int n = obj; // 自动拆箱
System.out.println("n = " + n);
Integer obj1 = 500;
System.out.println("obj等价于obj1返回结果为" + obj.equals(obj1));
}
}
手动拆箱装箱
public class Demo {
public static void main(String[] args) {
int m = 500;
Integer obj = new Integer(m); // 手动装箱
int n = obj.intValue(); // 手动拆箱
System.out.println("n = " + n);
Integer obj1 = new Integer(500);
System.out.println("obj等价于obj1的返回结果为" + obj.equals(obj1));
}
}
2、Math类、Date类、Character类、随机数Random、Calendar类等常用类
2.1 Math类
Java Math类的常用方法 (biancheng.net)http://c.biancheng.net/view/866.html
2.2 Date类、Calendar类
Java时间日期的处理:Java Date类、Calendar类详解 (biancheng.net)http://c.biancheng.net/view/876.html
2.3 Character类
Java Character类 (biancheng.net)http://c.biancheng.net/view/899.html
2.4 Random类
Java生成随机数(random()和Random类) (biancheng.net)http://c.biancheng.net/view/867.html
3、数组,二维数组、数组排序、复制数组、Arrays工具类
Java数组:针对数组(Array)的各种操作 (biancheng.net)http://c.biancheng.net/java/70/
复制数组
第二个参数是新数组长度,常用来增加数组大小
4、String类, equals()、compareTo() 等常用的方法
Java字符串比较(3种方法) (biancheng.net)http://c.biancheng.net/view/5808.html
区别c,Java中的==不能比较值,比较的是地址
5、StringBuilder、StringBuffer,比较它们的不同,使用它们拼接字符串和变量
StringBuffer 就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类。它提供了 append 和 add 方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列。
在很多情况下我们的字符串拼接操作不需要线程安全,所以 StringBuilder 登场了。StringBuilder 是 JDK1.5 发布的,它和 StringBuffer 本质上没什么区别,就是去掉了保证线程安全的那部分,减少了开销。
String、StringBuffer和StringBuilder类的区别 (biancheng.net)http://c.biancheng.net/view/5822.html
6、封装一个工具类StringUtils.java,实现字符串判断空的方法(公共静态方法)
Java判断字符串/数组为空需要同时判断null和“”两种状态。
public class StringUtils {
public static boolean isEmpty(String str){
if (str == null ||str.length() == 0 ){
return true;
}
return false;
}
}
public static void main(String[] args){
String str1 = "";
String str2 = null;
String str3 = "123";
System.out.println("\"\"is" + StringUtils.isEmpty(str1));
System.out.println("null is" + StringUtils.isEmpty(str2));
System.out.println("123 is" + StringUtils.isEmpty(str3));
System.out.println();
}
结果
true
true
false
Process finished with exit code 0
7、使用Calendar类打印本月的日历
public static void test1(){
Calendar d = Calendar.getInstance();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday = d.get(Calendar.DAY_OF_WEEK);
int firstDayOfWeek = d.getFirstDayOfWeek();
int indent =0;
while(weekday!=firstDayOfWeek){
indent ++;
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}while(weekday!=firstDayOfWeek);
System.out.println();
for(int i=0;i<indent;i++){
System.out.print(" ");
}
d.set(Calendar.DAY_OF_MONTH, 1);
do{
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d",day);
if(day == today){
System.out.print("*");
}else{
System.out.print(" ");
}
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
if(weekday==firstDayOfWeek) {
System.out.println();
}
}while(d.get(Calendar.MONTH) == month);
}
结果
星期日 星期一 星期二 星期三 星期四 星期五 星期六
1 2 3* 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Process finished with exit code 0