P1 包装类-引入
【1】什么是包装类:
以前定义变量,经常使用基本数据类型。
对于基本数据类型来说,它就是一个数,加点属性,加点构造器,
将基本数据类型对应进行了一个封装,产生了一个新的类,---》包装类。
int,byte--》基本数据类型
包装类---》引用数据类型
【2】对应关系:
基本数据类型 对应的包装类 继承关系
byte Byte --》Number--》Object
short Short --》Number--》Object
int Integer --》Number--》Object
long Long --》Number--》Object
float Float --》Number--》Object
double Double --》Number--》Object
char Character Object
boolean Boolean Object
【3】已经有基本数据类型了,为什么要封装为包装类?
(1)java语言 面向对象的语言,最擅长的操作各种各样的类。
(2)以前学习装数据的--》数据,int[] String[] double[] Student[]
以后学习的装装数据的---》集合,有一个特点,只能装引用数据类型的数据
【4】是不是有了包装类以后就不用基本数据类型了?
不是。
P2 包装类-常用属性-常用构造器
【1】直接使用,无需导包
Java.lang
【2】类的继承关系
java.lang.Object
java.lang.Number
java.lang.Integer
【3】实现接口
所有已实现的接口:
Serializable,Comparable<Integer>
【4】这个类被final修饰,那么这个类不能有子类,不能被继承:
public final class Integer
extends Number
implements Comparable<Integer>
【5】包装类是对基本数据类型的封装:对int类型封装产生了Integer
Integer类在对象中包装了一个基本类型int的值。Integer类型的对象包含一个int类型的字段
【6】类的历史
从以下版本开始:
JDK1.0
【7】属性
package hwd;
public class test01 {
//这是一个main方法,是程序的入口;
public static void main(String[] args){
//属性
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
//物极必反原理
System.out.println(Integer.MAX_VALUE+1);
System.out.println(Integer.MIN_VALUE-1);
}
}
2147483647
-2147483648
-2147483648
2147483647
【8】构造器 (发现没有空参构造器)
(1)int 类型作为构造器的参数:
Integer i1 = new Integer(12);
public Integer (int value){//传入的int类型的数据
this.value = value;//将你传入的int类型的值给了底层你封装的那个value
}
(2)String类型作为构造器的参数:
public Integer(String s) throws NumberFormatException{//传入一个字符串 ,相当于调用这个构造器/ //的时候很可能会出现异常(当你传入字符串没有办法转为int类型的时候)
this.value = parseInt(s,10);//将字符串转为int类型的数,然后赋给底层的value
}
P3 包装类-自动装箱-自动拆箱
【9】包装类特有的机制:自动装箱 自动拆箱:
//自动装箱:int ---》 Integer
Integer i = 12;
System.out.println(i);
//自动拆箱:Integer---》int
Integer i2 = new Integer(12);
int num = i2;
System.our.println(num);
(1) 自动装箱 自动拆箱 是从JDK1.5以后新出的特新
(2) 自动装箱 自动拆箱:将基本数据类型和包装类进行快速的类型转换
package hwd;
public class test01 {
//这是一个main方法,是程序的入口;
public static void main(String[] args){
//自动装箱
Integer i = 12;
System.out.println(i);
//自动拆箱
Integer i2 = new Integer(12);
int num = i2;
System.out.println(num);
}
}
p4
【10】常用方法
package hwd;
public class test01 {
//这是一个main方法,是程序的入口;
public static void main(String[] args){
Integer i1 = new Integer(6);
Integer i2 = new Integer(12);
System.out.println(i1.compareTo(i2));
//Integer对象是通过new关键字创建对象的
Integer i3 = new Integer(12);
Integer i4 = new Integer(12);
System.out.println(i3 == i4);
boolean flag = i3.equals(i4);
System.out.println(flag);
//Integer对象通过自动装箱来完成的
Integer i5 = 12;
Integer i6 = 12;
System.out.println(i5.equals(i6));
System.out.println(i5 == i6);
//intValue
Integer i7 = 130;
int i = i7.intValue();
System.out.println(i);
//parseInt(String s)
int i8 = Integer.parseInt("12");
System.out.println(i8);
//toString
Integer i10 = 130;
System.out.println(i10.toString());
}
}
-1
false
true
true
true
130
12
130
P5
package hwd;
import java.util.*;
public class Test {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
System.out.println(d.toString());
System.out.println(d.toGMTString());//过时方法
System.out.println(d.toLocaleString());
System.out.println(d.getYear());
System.out.println(d.getMonth());
//以后获取时间差用currentMillis() ,因为这个方法是静态的 可以类名.方法名直接调用
System.out.println(d.getTime());
System.out.println(System.currentTimeMillis());
long startTime = System.currentTimeMillis();
for(int i = 0; i < 100000; i++){
System.out.println(i);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
}
P6
package hwd;
import java.util.*;
import java.text.*;
import java.sql.*;
import java.sql.Date;
class Dome{//创建类
public static void main(String[]args){//主方法
Date d = new Date(15920559641516L);
System.out.println(d);
/**
* java.sql.Date和java.util.Date的区别
* java.util.Date:年月日 时分秒
* java.sql.Date:年月日
*/
java.util.Date date = new java.util.Date();
Date date1 = (Date) date;
Date date2 = new Date(date.getTime());
java.util.Date date3 = d;
Date date4 = Date.valueOf("2019-3-8");
}
}
2474-07-03
Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
at hwd.Dome.main(Dome.java:23)
P7
String--->java.util.Date 类型转换:
分解:
(1)String----》java.sql.Date
(2)java.sql.Date---->java.util.Date
package ten;
public class Test04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
java.sql.Date date = java.sql.Date.valueOf("2015/9-24");
java.util.Date date2 = date;
System.out.println(date2.toString());
}
}
Exception in thread "main" java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:143)
at ten.Test04.main(Test04.java:8)
[2] 引入新的类
【3】 日期格式
package ten;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Test05 {
public static void main(String[] args) {
// TODO Auto-generated method stub
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try{
Date d = df.parse("2019-4-6 12:23:54");
System.out.println(d);
}catch (ParseException e){
e.printStackTrace();
}
String format = df.format(new Date());
System.out.println(format);
Date date = new Date();
System.out.println(date.toString());
System.out.println(date.toGMTString());
System.out.println(date.toLocaleString());
}
}
Sat Apr 06 12:23:54 CST 2019
2022-05-12 14:33:26
Thu May 12 14:33:26 CST 2022
12 May 2022 06:33:26 GMT
2022-5-12 14:33:26
P8
package ten;
import java.util.*;
public class Test05 {
public static void main(String[] args) {
Calendar cal = new GregorianCalendar();
Calendar cal2 = Calendar.getInstance();
System.out.println(cal);
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DATE));
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(cal.getActualMaximum(Calendar.DATE));
System.out.println(cal.getActualMinimum(Calendar.DATE));
cal.set(Calendar.YEAR, 1990);
cal.set(Calendar.MONDAY, 3);
cal.set(Calendar.DATE, 16);
System.out.println(cal);
java.sql.Date date = java.sql.Date.valueOf("2020-4-5");
cal.setTime(date);
System.out.println(cal);
}
}
java.util.GregorianCalendar[time=1652338556448,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=20,WEEK_OF_MONTH=2,DAY_OF_MONTH=12,DAY_OF_YEAR=132,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=55,SECOND=56,MILLISECOND=448,ZONE_OFFSET=28800000,DST_OFFSET=0]
2022
4
12
5
31
1
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1990,MONTH=3,WEEK_OF_YEAR=20,WEEK_OF_MONTH=2,DAY_OF_MONTH=16,DAY_OF_YEAR=132,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=55,SECOND=56,MILLISECOND=448,ZONE_OFFSET=28800000,DST_OFFSET=0]
java.util.GregorianCalendar[time=1586016000000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=3,WEEK_OF_YEAR=15,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=96,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
P9
P10
package ten;
import java.util.*;
public class Test05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你想要查看到日期:(提示:请按照例如2012-5-6的格式书写)");
String strDate = sc.next();
System.out.println(strDate);
java.sql.Date date = java.sql.Date.valueOf("2019-5-18");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println("日\t一\t三\t四\t五\t六\t");
int maxDay = cal.getActualMaximum(Calendar.DATE);
int nowDay = cal.get(Calendar.DATE);
cal.set(Calendar.DATE, 1);
int num = cal.get(Calendar.DAY_OF_WEEK);
System.out.println(num);
int day = num - 1;
int count = 0;
for (int i = 1; i <= day; i++){
System.out.println("\t");
}
count = count + day;
for (int i = 1; i <= maxDay; i++){
System.out.println( i + "\t");
if (i == nowDay){
System.out.println(i + "*" + "\t");
} else{
System.out.println(i + "\t");
}
count++;
if (count%7 == 0){
System.out.println();
}
}
}
}
请输入你想要查看到日期:(提示:请按照例如2012-5-6的格式书写)
1997-1-1
1997-1-1
日 一 三 四 五 六
4
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18*
19
19
20
20
21
21
22
22
23
23
24
24
25
25
26
26
27
27
28
28
29
29
30
30
31
31
P11
P12
package ten;
import java.util.*;
import java.time.*;;
public class Test05 {
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
LocalDate of = LocalDate.of(2010, 5, 6);
System.out.println(of);
LocalDateTime of2 = LocalDateTime.of(1890, 12, 23, 13 , 24, 15);
System.out.println(of2);
System.out.println(localDateTime.getYear());
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getDayOfWeek());
System.out.println(localDateTime.getHour());
System.out.println(localDateTime.getMinute());
System.out.println(localDateTime.getSecond());
LocalDateTime localDateTime2 = localDateTime.withMonth(8);
System.out.println(localDateTime);
System.out.println(localDateTime2);
LocalDateTime localDateTime1 = localDateTime.plusMonths(4);
System.out.println(localDateTime);
System.out.println(localDateTime1);
LocalDateTime localDateTime3 = localDateTime.minusMonths(5);
System.out.println(localDateTime);
System.out.println(localDateTime3);
}
}
2022-05-12
18:41:27.786
2022-05-12T18:41:27.786
2010-05-06
1890-12-23T13:24:15
2022
MAY
5
THURSDAY
18
41
27
2022-05-12T18:41:27.786
2022-08-12T18:41:27.786
2022-05-12T18:41:27.786
2022-09-12T18:41:27.786
2022-05-12T18:41:27.786
2021-12-12T18:41:27.786
P13
package ten;
import java.util.*;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;;
public class Test05 {
public static void main(String[] args) {
DateTimeFormatter df1 = DateTimeFormatter.ISO_DATE_TIME;
LocalDateTime now = LocalDateTime.now();
String str = df1.format(now);
System.out.println(str);
TemporalAccessor parse = df1.parse("2020-06-15T15:02:51.29");
System.out.println(parse);
DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
LocalDateTime now1 = LocalDateTime.now();
String str2 = df2.format(now1);
System.out.println(str2);
TemporalAccessor parse1 = df2.parse("20-6-15 下午3:18");
System.out.println(parse1);
DateTimeFormatter df3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
LocalDateTime now2 = LocalDateTime.now();
String format = df3.format(now2);
System.out.println(format);
TemporalAccessor parse2 = df3.parse("2020-06-15 03:22:03");
System.out.println(parse2);
}
}
2022-05-12T19:00:40.778
{},ISO resolved to 2020-06-15T15:02:51.290
2022年5月12日
Exception in thread "main" java.time.format.DateTimeParseException: Text '20-6-15 下午3:18' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1777)
at ten.Test05.main(Test05.java:30)
P14
【1】直接使用,无需导包
package java.lang;
【2】final修饰类,这个类不能被继承
public fianl class Math{}
【3】构造器私有化,不能创建Math类的对象
【4】Math内部的所有属性,方法都被static修饰;类名.直接调用,无需创建对象
【5】常用方法
package ten;
import java.math.*;
import java.util.*;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;;
public class Test05 {
public static void main(String[] args) {
System.out.println("随机数:" + Math.random());
System.out.println("绝对值:" + Math.abs(-80));
System.out.println("向上取值:" + Math.ceil(9.1));
System.out.println("向下取值:" + Math.floor(9.9));
System.out.println("四舍五入:" + Math.round(3.5));
System.out.println("取大的那个值:" + Math.max(3, 6));
System.out.println("取小的那个值:" + Math.min(3, 6));
}
}
随机数:0.9310780961593298
绝对值:80
向上取值:10.0
向下取值:9.0
四舍五入:4
取大的那个值:6
取小的那个值:3
P15
package ten;
import java.util.Random;
import java.math.*;
import java.util.*;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;;
public class Test05 {
public static void main(String[] args) {
System.out.println("随机数" + Math.random());
Random r1 = new Random(System.currentTimeMillis());
int i = r1.nextInt();
System.out.println(i);
Random r2 = new Random();
System.out.println(r2.nextInt(10));
System.out.println(r2.nextDouble());
}
}
随机数0.9473141180605916
-1619400695
1
0.5757522028458646
P16
P17
package ten;
public class Test01 {
public static void main(String[] args) {
String str = "abc";
System.out.println(str);
String str2 = "";
String s1 = new String();
String s2 = new String("abc");
String s3 = new String(new char[]{'a','b','c'});
String s4 = "abc";
System.out.println("字符串长度是:" + s4.length());
String s5 = new String("abc");
System.out.println("字符串是否为空:" + s5.isEmpty());
System.out.println("获取字符串的下标对应的字符为:" + s5.charAt(1));
}
}
abc
字符串长度是:3
字符串是否为空:false
获取字符串的下标对应的字符为:b
P18
package ten;
public class Test01 {
public static void main(String[] args) {
String str = "abc";
System.out.println(str);
String str2 = "";
String s1 = new String();
String s2 = new String("abc");
String s3 = new String(new char[]{'a','b','c'});
String s4 = "abc";
System.out.println("字符串长度是:" + s4.length());
String s5 = new String("abc");
System.out.println("字符串是否为空:" + s5.isEmpty());
System.out.println("获取字符串的下标对应的字符为:" + s5.charAt(1));
String s6 = new String("abc");
String s7 = new String("abc");
System.out.println(s6.equals(s7));
}
}
abc
字符串长度是:3
字符串是否为空:false
获取字符串的下标对应的字符为:b
true
P19
package ten;
public class Test01 {
public static void main(String[] args) {
String str = "abc";
System.out.println(str);
String str2 = "";
String s1 = new String();
String s2 = new String("abc");
String s3 = new String(new char[]{'a','b','c'});
String s4 = "abc";
System.out.println("字符串长度是:" + s4.length());
String s5 = new String("abc");
System.out.println("字符串是否为空:" + s5.isEmpty());
System.out.println("获取字符串的下标对应的字符为:" + s5.charAt(1));
String s6 = new String("abc");
String s7 = new String("abc");
System.out.println(s6.equals(s7));
String s8 = new String("abc");
String s9 = new String("accdef");
System.out.println(s8.compareTo(s9));
}
}
abc
字符串长度是:3
字符串是否为空:false
获取字符串的下标对应的字符为:b
true
-1
P20
package ten;
import java.util.Arrays;
public class Test01 {
public static void main(String[] args) {
String str = "abc";
System.out.println(str);
String str2 = "";
String s1 = new String();
String s2 = new String("abc");
String s3 = new String(new char[]{'a','b','c'});
String s4 = "abc";
System.out.println("字符串长度是:" + s4.length());
String s5 = new String("abc");
System.out.println("字符串是否为空:" + s5.isEmpty());
System.out.println("获取字符串的下标对应的字符为:" + s5.charAt(1));
String s6 = new String("abc");
String s7 = new String("abc");
System.out.println(s6.equals(s7));
String s8 = new String("abc");
String s9 = new String("accdef");
System.out.println(s8.compareTo(s9));
String s10 = "abcdefhijk";
System.out.println(s10.substring(3));
System.out.println(s10.substring(3,6));
System.out.println("ppppp");
String s11 = "abcdeahija";
System.out.println(s11.replace('a', 'u'));
String s12 = "a-b-c-d-e-f";
String[] strs = s12.split("-");
System.out.println(Arrays.toString(strs));
String s13 = "abc";
System.out.println(s13.toUpperCase());
System.out.println(s13.toUpperCase().toLowerCase());
String s14 = " a b c ";
System.out.println(s14.trim());
String s15 = "abc";
System.out.println(s15.toString());
System.out.println(String.valueOf(false));
}
}
abc
字符串长度是:3
字符串是否为空:false
获取字符串的下标对应的字符为:b
true
-1
defhijk
def
ppppp
ubcdeuhiju
[a, b, c, d, e, f]
ABC
abc
a b c
abc
false
P21
package ten;
public class Tset02 {
public static void main(String[] args) {
String s1 = "a" + "b" + "c";
String s2 = "ab" + "c";
String s3 = "a" + "bc";
String s4 = "abc";
String s5 = "abc" + "";
System.out.println(s1 == s4);
System.out.println(s2 == s5);
String s6 = new String("abc");
}
}
true
true
package ten;
public class Test03 {
public static void main(String[] args) {
String a = "abc";
String b = a + "def";
System.out.println(b);
}
}
abcdef
P22
package ten;
import java.util.Arrays;
public class Test01 {
public static void main(String[] args) {
StringBuilder sb3 = new StringBuilder();
StringBuilder sb2 = new StringBuilder(3);
StringBuilder sb = new StringBuilder("abc");
}
}
P23
package ten;
import java.util.Arrays;
public class Test01 {
public static void main(String[] args) {
StringBuilder sb3 = new StringBuilder();
StringBuilder sb2 = new StringBuilder(3);
StringBuilder sb = new StringBuilder("abc");
sb.append("def").append("aaaaaaa").append("bbb").append("oooooo");
System.out.println(sb.append("def").append("aaaaaaa").append("bbb").append("oooooo").toString());
}
}
abcdefaaaaaaabbboooooodefaaaaaaabbboooooo
P24
package ten;
public class Tset02 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
System.out.println(sb.append("abc") == sb.append("def"));
}
}
true
P25
P26