Java学习随笔---常用API(二)

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
    }
}

原文地址:https://www.cnblogs.com/Alitac/p/11271256.html

时间: 2024-08-21 00:10:01

Java学习随笔---常用API(二)的相关文章

Java学习随笔 - Java保留字

零.说在前面 之前主要是学C/CPP,由于某些原因,打算从头开始把Java的基础从头过一遍,巩固一下.于是,从今天开始开坑Java学习随笔,会将自己在复习Java过程中的一些心得体会啥的写上来,帮助自己整理知识. 一.synchronized synchronized关键字之前都没见过,于是Google了一下.它的作用是给对象.方法.代码块加锁,使得同时只能有一个线程执行.使用.相当于是互斥的一种关系. 二.transient 一个类在实现了Serializable接口之后,其中有部分数据不想进

常用API二

常用API二一.Object 成员方法: 1.toString(): 重写前,调用object类中的,打印的是全类名@16进制的地址值 . 重写后打印具体对象的值 2.equals():重写前比较的是地址值 重写后打印的是具体属性值 3.获取字节码对象3种方式(三个获取的值相等) A:通过Object类中getClass()方法调用,Teacher t = new Teacher();t.getclass(); B:类名点调用 Teacher.class(); C:通过Class类的静态方法fo

hadoop java接口及常用api

# java接口及常用api package com.yting.hadoop.hdfs; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputS

原 Java学习之Xml系列二:xml按条件查询、xml递归遍历所有元素和属性

xml中加入了几条,为了方便查询时作为示例. 话不多说见代码注释: DTD文件:SwordTypeDefinition.dtd <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT SwordLibrary (Sword*)> <!ELEMENT Sword (SwordName,Price,Attack)> <!ELEMENT SwordName (#PCDATA)> &l

Java 常用API(二)

目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar类 5. System类 6. StringBuilder类 String类的原理 StringBuilder类的原理 StringBuilder的构造方法 StringBuilder的常用方法 7. 包装类 概述 装箱与拆箱(以 int 类型为例) 自动装箱与自动拆箱 基本类型与字符串类型之间的相

java基础(15):常用API(Object、String、StringBuffer)

1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用对象.首先在学习API中的Object类之前,先来学习如何使用API. 1.1 Java 的API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了

Java学习之路(二)--Thinking in Java

针对昨天Java学习之路(一)--Thinking in Java中的类的静态方法不能访问创建非静态类,给出了将内部类修改成为static静态类,操作方便简单.现在给出第二种不需要添加删除的另一种极为高效的方式.可以将内部类从你所创建的类中复制粘贴到类外,作为一个外部类,在static主方法中就可以创建类的引用了. 源代码如下: ? class test{ int s; char c; } public class test1 { public static class test{ int s;

(。??)ノ~个人java学习随笔记录

基本认识 1.编程思维 根据这几天的java学习,编写程序最重要的就是要有一个清晰的思路.语法上的错误可以跟随着不断的联系与学习来弥补,清晰的思维却只有自己来前期模仿,后面慢慢摸索形成一套属于自己的思维方式. 2.编程方向 程序编写方面考虑的是完成某个任务需要的东西(对象),也就是达成目标需要用什么来完成.程序主要编写思路也是围绕这些东西来写,而不是围绕完成这个目标的步骤.(这就是所谓的面向对象编程,和C语言最大的区别) 3.编程习惯 随着以后编写的程序的不断扩张,程序会越来越大,需要的对象也会

JAVA学习第三十二课(常用对象API)- 基本数据类型对象包装类

将基本数据类型(8种:int..)封装成对象的好处就是可以在对象中封装更多的功能和方法来操控该数据 常见的操作就是:用于基本数据类型与字符串之间的转换 基本数据类型对象包装类一般用于基本类型和字符串之间的转换 基本类型----->字符串 1.基本类型数值+"" 2.用string类中的valueOf(基本类型数值) 3.用Integer.ValueOf(); 字符串-->基本类型数值 1.使用包装类中的静态方法XXX  parseXXX("XXXX")比