《Java自学180天笔记》
Object类介绍
Object类是所有类的父类。一个类都会直接或者间接的继承自该类
toString()方法
作用:打印对象信息
重写前:打印的包名类名@地址值
重写后:打印的是对象中的属性值
equals()方法
Object.equals(a,b) 比较两个对象是否相同,但是加了一些健壮性的判断
DateFormat类
package demo02;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/*java.text.DateFormat:是日期/时间格式化子类的抽象类作用: 格式化(也就是日期->文本)、解析(文本->日期)成员方法: String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 Date parse(String source)把符合模式的字符串,解析为Date日期DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类java.text.SimpleDateFormat extends DateFormat构造方法: SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat. 参数: String pattern:传递指定的模式 模式:区分大小写 y年 M月 d日 H小时 m分 s秒 yyyy-MM-dd HH:mm:ss 注意: 模式中的字母是不能更改的,连接模式的-符号可以改变 */public class DemoDateFormat { public static void main(String[] args) { demo01(); } /* 使用DateFormat类中的方法parse,把文本解析为日期 Date parse(String source)把符合模式的字符串,解析为Date日期 使用步骤: 1.创建SimpleDateFormat对象,构造方法中传递指定的模式 2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期 注意: public Date parse(String source) throws ParseException parse方法声明了一个异常叫ParseException解析异常 如果字符串和构造方法中的模式不一样,那么程序就会抛出异常 */ private static void demo02() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse("2020-10-04 22:42:20"); System.out.println(date); } /* 使用DateFormat类中的方法format,把日期格式化为文本 使用步骤: 1.创建SimpleDateFormat对象,构造方法中传递指定的模式 2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串 (文本) */ private static void demo01(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String text = sdf.format(date); System.out.println(date); System.out.println(text); }}
Sun Oct 04 22:50:44 CST 20202020-10-04 22:50:44
Calendar类常用成员方法
package demo02;import java.util.Calendar;import java.util.Date;/*java.util.Calendar类:日历类Calendar类是一个抽象类,里面提供了很多操作日历字段的方法Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类子类的对象Calendar类的成员方法: public int get(int field):返回给定日历字段的值。 public void set(int field,int value):将给定的日历字段设置为给定值。 public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。 public Date getTime():返回一个元素此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象 */public class DemoCalendar { public static void main(String[] args) { Calendar c = Calendar.getInstance();//多态 System.out.println(c); demo01(); demo02(); demo03(); } private static void demo04(){ Calendar c = Calendar.getInstance(); Date date = c.getTime(); System.out.println(date); } private static void demo03(){ Calendar c = Calendar.getInstance(); c.add(Calendar.YEAR,2); int year = c.get(Calendar.YEAR); System.out.println(year); } /* public void set(int field,int value):将给定的日历字段设置为给定值 参数: int field:传递指定日历字段(YEAR,MONTH...) int value:传递的字段设置的具体的值 */ private static void demo02(){ Calendar c = Calendar.getInstance(); //设置年为2021 c.set(Calendar.YEAR,2021); int year = c.get(Calendar.YEAR); System.out.println(year); } /* public int get(int field):返回给定日历字段的值。 参数:传递指定的日历字段(YEAR,MONTH...) 返回值:日历字段代表具体的值 */ private static void demo01(){ //使用getInstance方法获取Calendar对象 Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); System.out.println(year); }}
System类的常用方法
package demo02;import java.util.Arrays;public class DemoSystem { public static void main(String[] args) { demo01(); demo02(); } /* public static void arraycopy():将数组中指定的数据拷贝到另一个数组中。 */ private static void demo02() { //定义源数组 int[] src = {1,2,3,4,5}; int[] dest = {6,7,8,9,10}; System.out.println("复制前:"+ Arrays.toString(dest)); System.arraycopy(src,0,dest,0,3); System.out.println("复制后:"+ Arrays.toString(dest)); } /* public static long currentTimeMillis():返回以毫秒为单位的当前时间。 用来测试程序的效率 练习: 验证for循环打印数字1~9999所需要使用的时间(毫秒) */ public static void demo01(){ //程序执行前,获取一次毫秒值 long s = System.currentTimeMillis(); for (int i = 0; i <9999 ; i++) { System.out.println(i); } //程序执行后,在获取一次毫秒值 long e = System.currentTimeMillis(); System.out.println("程序共耗时:"+(e-s)+"毫秒"); }}
StringBuilder原理
StringBuilder的构造方法和append方法
package demo03;/*java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率构造方法: public StringBuilder():构造一个空的StringBuilder容器。 public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。成员方法: public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。 参数: 可以是任意的数据类型 */public class DemoStringBuilder { public static void main(String[] args) { //创建StringBuilder对象 StringBuilder bu1 = new StringBuilder("abc"); System.out.println("bu1:"+bu1); //使用append方法往StringBuilder中添加数据 //append方法返回的是this,调用方法的对象bu1 StringBuilder bu2 = bu1.append("dddd"); System.out.println(bu1); System.out.println(bu2); //使用append方法无需接收返回值 bu1.append("wewfe"); }}
包装类_装箱与拆箱
package demo03;/*装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类) 构造方法: Integer(int value)构造一个新分配的Integer对象,它表示指定的int值。 Integer(String s)构造一个新分配的Integer对象,它表示String参数所指示的int值。 传递的字符串,必须是基本类型的字符串,否则会抛出异常“100”正确,“a”抛异常 静态方法: static Integer valueOf(int i)返回一个表示指定的int值的Integer实例。 static Integer valueOf(String s)返回保存指定的String的值的Integer对象。 拆箱:在包装类中取出基本类型数据(包装类->基本类型的数据) 成员方法: int intValue()以int类型返回该Integer的值。*/public class DemoInteger { public static void main(String[] args) { //装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类) //构造方法 Integer int1 = new Integer(1);//方法上有横线,说明方法过时了 System.out.println(int1);//1 重写了toString方法。 //静态方法 Integer int3 = Integer.valueOf("1"); System.out.println(int3); //拆箱:在包装类中取出基本类型数据(包装类->基本类型的数据) int i = int1.intValue(); System.out.println(i); }}
包装类_自动装箱与自动拆箱
package demo03;import java.util.ArrayList;/*自动装箱与自动拆箱 基本类型的数据和包装类之间可以自动的相互转换 JDK1.5之后出现的新特性 */public class Demo02Integer { public static void main(String[] args) { /* 自动装箱:直接把int类型的整数赋值给包装类 */ Integer in = 1;//相当于Integer in = new Integer(1); /* 自动拆箱:in是包装类,无法直接参与运算,可以自动转换为基本类型的数据,再参与计算 in+2;就相当于in.intValue()+3=3; */ in = in + 2; //ArrayList集合无法直接存储整数,可以存储Integer包装类 ArrayList list = new ArrayList<>(); list.add(1);//自动装箱list.add(new Integer(1)); int a = list.get(0);//自动拆箱list.get(0).intValue(); }}
包装类_基本类型与字符串之间的相互转换
package demo03;/*基本类型与字符串之间的转换基本类型-->字符串 1.基本类型数据的值+" "最简单的方式(工作中常用) 2.使用包装类中的静态方法 static String toString(int i)返回一个表示指定整数的String对象。 3.使用String类中的静态方法 static String vaule(int i )返回int参数的字符串表示形式。字符串-->基本类型 使用包装类的静态方法parseXX("字符串") Integer类:static int parseInt(String s) Double类:static double parseDouble(String s) ... */public class Demo03Integer { public static void main(String[] args) { //基本类型-->字符串 String s = Integer.toString(100); String s3 = String.valueOf(200); //字符串-->基本类型 int i = Integer.parseInt("100"); }}