Java学习随笔

Wesley13
• 阅读 704

Object类的toString方法

将一个对象返回为字符串形式,但一般使用的时候会覆盖重写toString方法 Object类是所有类的父亲

//
public class Person {
    private String name;
    private int age;
//=============================================================================
    public String toString(){//toString方法被覆盖重写,返回了一个固定格式的内容。
       return  "我的名字是"+this.name+"今年我"+this.age+"岁了";
    }
//=============================================================================
    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


public class personMain {

    public static void main(String[] args) {
        Person person = new Person();
        person.setAge(18);
        person.setName("迪丽热巴");
        System.out.println(person.toString());
    }
}

Object类中的equals方法

equals方法默认比较的是对象的地址值,经常需要重写equals方法

重写equals方法

//person类
public class Person {
    private String name;
    private int age;

    public boolean equals(Object obj){
        //传递参数如果是this本身,为了提高效率,直接返回true
        if (obj == this) {
            return true;
        }
        //传递参数如果是null,为了提高效率,直接返回false;
        if (obj == null)
            return false;
   //==========================================================//主要部分
        //向下转型,因为这是一个隐含的多态,多态无法访问子类特有内容
        //Object obj = p2 = new Person("迪丽热巴", 19);
        Person p = (Person) obj;
        //this表示传过去的第一个,p表示传过去的第二个
        boolean b = this.name.equals(p.name)&&this.age==p.age;
        return b;
  //============================================================
    }
    //也可以通过自动实现
   /* @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }*/

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


//主类
public class equalsMain {

    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person();

        person1.setName("江疏影");
        person1.setAge(18);
        person2.setName("江疏影");
        person2.setAge(18);

        System.out.println(person1.equals(person2));
    }
}

object类中的equals和objects类中的equals的区别,objects类中的equals可以防止空指针异常。


Date类

打印当前系统时间

public class Data {
    public static void main(String[] args) {
        Date date = new Date();

        System.out.println(date);
    }
}

格式化系统的时间格式

y--->年 M--->月 d--->日
H--->时 m--->分 s--->秒

public class dateformate {

    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//写出固定格式的构造方法
        Date date = new Date();//创建一个时间
        System.out.println(date);
        String str = sdf.format(date);//调用format
        System.out.println(str);

    }
}

按照固定格式将文本解析为日期

public class dateformat2 {

    public static void main(String[] args) throws ParseException {//throws是异常抛出,
        SimpleDateFormat stf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//创建固定格式的构造方法
        Date date = stf.parse("2019年07月29日 17时29分03秒");//定义Date类来接收
        System.out.println(date);
    }
}

得到毫秒值

public class gettime {

    public static void main(String[] args) {
        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);
    }
}

案例--计算出生天数

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

public class birthday {
    public static void main(String[] args) throws ParseException {//异常抛出
        System.out.println("请输入您的生日:格式:yyyy-MM-dd");
        Scanner sc = new Scanner(System.in);
        String birthday = sc.next();//输入日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//写固定格式的构造方法
        Date date = sdf.parse(birthday);//将日期转换成Date类型的日期
        long beforeTime = date.getTime();//将出生时间转换为毫秒值
        long nowTime = new Date().getTime();//将当前系统时间转换为毫秒值
        long time = nowTime - beforeTime;
        System.out.println(time/1000/60/60/24);//将毫秒值转换为天
    }
}

Calendar类

public class calendarl {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();//获取日历信息
        System.out.println(c);//将会输出一堆与当前日历有关的信息
    }
}

Calendar中的get方法 可以返回给定日历字段的值

public class calendarget {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();//获取calendar类的对象
        int year = c.get(Calendar.YEAR);//得到年
        System.out.println(year);
        int month = c.get(Calendar.MONTH);//得到月
        System.out.println(month);
        int date = c.get(Calendar.DATE);//得到日
        System.out.println(date);
    }
}

Calendar中的set方法 设置年月日

public class calendset {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR,2000);//将年设置为2000年
        c.set(Calendar.MONTH,11);//将月设置为11月
        c.set(2000,03,03);//同时设置年月日
        System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
    }
}

calendar中的add方法 把指定字段增加或减少指定的值,正数为增加,负数为减少 public class calendset {

public static void main(String[] args) {
    Calendar c = Calendar.getInstance();

    c.set(2000,03,03);//同时设置年月日
    c.add(Calendar.YEAR,2);//把年增加两年
    c.add(Calendar.MONTH,-2);//把月减少两个月
    System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
}

}

calendar中的getTime方法 将日历转换为日期,即准换为Date格式

public class calendset {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();

        c.set(2000,03,03);//同时设置年月日
        Date time = c.getTime();//将日历格式转换为日期
        System.out.println(time);

    }
}

System类的常用方法

System类中的currentTimeMillis方法 返回以毫秒为单位的当前时间,可以计算程序的运行时间

public class currenttime {

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 9999; i++) {
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start);
    }
}

System类中的arraycopy方法

从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 static void arraycopy(源数组, 源数组起始位置, 目标数组, 目标数组, 要复制的数组元素的数量。 )

public class arraycopyl {

    public static void main(String[] args) {
        int[] array1 = {1,2,3,4,5};
        int[] array2 = {6,7,8,9,10};
        System.arraycopy(array1,0,array2,0,3);
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
    }
}

StringBuilder中常用的方法

StringBuilder中的append方法 像此序列中追加一个数据,数据可以是任何类型 StringBuilder是一个字符缓冲区,可以提高效率

public class StringBuilderappend {

    public static void main(String[] args) {
        StringBuilder s = new StringBuilder();
        s.append(1);
        s.append('a');
        s.append("fadsf");
        s.append(1).append(2).append('i');//也可以这样连续添加数据
        System.out.println(s);
    }
}

StringBuilder和String的互换 当我们需要对一个字符串进行频繁的删除添加操作的时候,使用stringBuiler的效率比较高。因为String是一个常量,使用一次就多一个字符串类型。

public class StringandStringBuilder {

    public static void main(String[] args) {
        String str = "hello";
        StringBuilder s = new StringBuilder(str);//将String类型转换为StringBuilder类型。
        String str2 = s.toString();//通过toString把StringBuilder类型转换为String类型。
        System.out.println(str2);
    }
}

装箱-->把基本数据类型包装到包装类中

可以使用构造方法和静态方法

public class box {

    public static void main(String[] args) {
        Integer a = new Integer(3);//使用构造方法将3装进包装类中,但方法已过时
        Integer b = Integer.valueOf(4);//使用方法将4放入包装类中
    }
}

拆箱-->在包装类中取出基本类型

public class box {

    public static void main(String[] args) {
        Integer b = Integer.valueOf(4);//使用方法将4放入包装类中
        int a = b.valueOf(b);//将包装类转换成整形
    }
}

自动装箱与自动拆箱

自动装箱

Integer a = 1;

自动拆箱

a = a+2;//直接运算

基本类型与字符串之间的转换

基本类型-->字符串类型

  1. +“ ”
  2. 包装类的静态方法toString;
  3. String类的静态方法valueof();

字符串类型-->基本类型

  1. 使用包装类的静态方法parseXXX;
public class box {

    public static void main(String[] args) {
        int a = 1;
        String str = a+" ";//使用加空字符的方法将基本类型转为字符串类型。

        String str2 = Integer.toString(a);//包装类的静态方法toString;

        String str3 = String.valueOf(a);//String类的静态方法valueof();

        int i = Integer.parseInt(str);//使用包装类的静态方法parseXXX
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这