Java小农养成记第十一天

day11

第一章 Object类

1.1 概述

Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
在这里插入图片描述

Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。

1.2 toString()

Object toString() 方法用于返回对象的字符串表示形式。

语法

object.toString()

参数

  • 无 。

返回值

返回对象的字符串表示形式。

默认返回格式:对象的 class 名称 + @ + hashCode 的十六进制字符串。

import java.util.Objects;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

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

    /*
        直接打印对象的地址值没有意义,需要重写object类的toString方法
        打印对象的属性(name , age)

     */

/*
    @Override
    public String toString() {
        return "Person{name = " + name + " , age = " + age + "}";
    }
*/

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @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 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;
    }
}
/*
    java.lang.Object类
    类Object是类层次结构的根(最顶层)类,每个类都使用Object作为超(父)类。
    所有对象(包括数组)都实现这个类的方法
 */
public class Demo01ToString {
    public static void main(String[] args) {
        /*
        Person类默认继承了Object类,所以可以使用Object类中的toString方法
        String toString() 返回该对象的字符串表示
         */

        Person p = new Person("张三", 18);
        String s = p.toString();
        System.out.println(s);//com.itheima.demo01.Object.Person@50cbc42f,重写后Person{name = 张三 , age = 18}

        //直接打印对象的名字,其实就是调用对象的toString方法p = p.toString();
        System.out.println(p);//com.itheima.demo01.Object.Person@50cbc42f,重写后Person{name = 张三 , age = 18}

        /*
        看一个类是否重写了toString方法,直接打印这个类对应对象的名字即可
        如果没有重写toString方法,那么打印的就是对象的地址值(默认)
        如果重写toString方法,那么就按照重写的方式打印

         */
    }
}

1.3equals()

Object equals() 方法用于比较两个对象是否相等。

equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等。

**注意:**如果子类重写了 equals() 方法,就需要重写 hashCode() 方法,比如 String 类就重写了 equals() 方法,同时也重写了 hashCode() 方法。

语法

object.equals(Object obj)

参数

  • obj - 要比较的对象。

返回值

如果两个对象相等返回 true,否则返回 false。

import java.util.Objects;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    /*
    object类的equals方法黑认比较的是两个对象的地址值,没有意义
    所以我们需要重写equals方法,比较两个对象的属性值(name, age)
        对象的属性值一样,返回true,否则返回false
    问题:
        隐含着一个多态
        object obj = new Person("古力娜扎"",18);
        多态弊端:无法使用子类特有的内容(属性,方法)
        解决:可以使用向下转型(强转)把object类型转换为Person

     */

/*
    @Override
    public boolean equals(Object obj) {
        //增加一个判断,传递的参数obj是null,直接返回false,提高程序的效率
        if (obj == null){
            return false;
        }

        //增加一个判断,是Person类型在转换,防止类型转换异常ClassCastException
        if(obj instanceof Person){
            //使用向下转型(强转)把object类型转换为Person
            Person p = (Person)obj;
            //
            boolean b = this.name.equals(p.name) && this.age == p.age;
            return b;
        }

        return false;
    }
*/

/*
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        //getClass() != o.getClass() 使用反射技术,判断o是否为Person类型 等效于 obj instanceof Person
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }
*/

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

1.4 Objects类equals()

在刚才IDEA自动重写equals代码中,使用到了java.util.objects类,那么这个类是什么呢?

JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save (空指针安全的)或null-tolerant (容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。方法如下:

public static boolean equals(object a,object b);判断两个对象是否相等。
我们可以查看一下源码,学习一下:

public static boolean equals(object a,object b) {
	return (a == b)ll (a != null && a.equals(b));
}

第二章 日期时间类

2.1 Date类

/*
    java.util.Date;表示日期和时间的类
    类Date表示特定的扬间,精确到毫秒。
    毫秒:千分之一秒 1000毫秒=1秒
    特定的瞬间:一个时间点,一刹那时间
    2088-08-08 09:55:33:333瞬间
    2088-08-08 09:55:33:334瞬间
    2088-08-08 09:55:33:334瞬间
    ...
    毫秒值的作用:可以对时间和日期进行计算
    2099-01-03到2088-01-01中间一共有多少天
    可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为曰期

    把日期转换为豪秒:
        当前的日期:2088-01-01
        时间原点(0毫秒):1970 年 1 月 1 日 00 : 00 : 00(英国格林威治)
        就是计算当前日期到时间原点之间一共经历了多少毫秒
    注意:
        中国属于东八区,会把时间增加8小时
        1970年1月1日 08:00:00

    把毫秒转换为日期:
        1天 = 24 * 60 * 60 = 86400 秒 = 86400 * 1000 = 86400000毫秒
 */
public class Demo01Date {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());//获取当前系统时间的到1970年1月1日00:00:00经历了多少毫秒
    }
}
import java.util.Date;

public class Demo02Date {
    public static void main(String[] args) {
        demo01();
        demo02();
        demo03();
    }
    /*
    Date类的成员方法
        Long getTime()把日期转换为毫秒(相当于system.currentTimeMillis())
        返回自1970年1月1日00:00:00 GNT以来此Date对象表示的毫秒数。

     */
    private static void demo03() {
        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);//1642232462963
    }

    /*
        Date类的带参数构造方法:
            Date(Long date):传递毫秒值,把毫秒转换为Date日期
     */
    private static void demo02() {
        Date date = new Date(0L);
        System.out.println(date);//Thu Jan 01 08:00:00 CST 1970

        Date date1 = new Date(15811111111111111L);
        System.out.println(date1);//Fri Mar 02 12:38:31 CST 503004
    }

    /*
        Date类的空参数构造方法:
            Date()获取的就是当前系统的日期和时间

    */
    private static void demo01() {
        Date date = new Date();
        System.out.println(date);//Sat Jan 15 15:35:13 CST 2022
    }
}

2.2 DateFormat类

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"
        "yyyy年MM月dd日 HH时mm分ss秒”
    注意:
        模式中的字母不能更改,连接模式的符号可以改变
 */
public class Demo01DateFormat {
    public static void main(String[] args) throws ParseException {
        demo01();
        demo02();
    }
    /*
    使用DateFormat类中的方法parse,把文本解析为日期
    Date parse(String source)把符合模式的字符串,解析为Date日期
    使用步骤:
        1.创建simpLeDateFormat对象,构造方法中传递指定的模式
        2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
        注意:
            public Date parse(String source) throws ParseException
            parse方法声明了一个异常叫ParseException解析异常
            如果字符串和构造方法中的模式不一样,那么程序就会抛出此异常
            调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续声明抛出这一个异常,要么try ...catch自己处理这个异常

     */
    private static void demo02() throws ParseException {
        //1.创建simpLeDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
        Date date = sdf.parse("2022-01-15 16:01:58");
        System.out.println(date);//Sat Jan 15 16:01:58 CST 2022
    }

    /*
        使用DateFormat类中的方法format,把日期格式化为文本
        String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串
        使用步骤:
            1.创建simpleDateFormat对象,构造方法中传递指定的模式
            2.调用SimpLeDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
     */
    private static void demo01() {
        //1.创建simpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //2.调用SimpLeDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
        Date date = new Date();
        String text = sdf.format(date);

        System.out.println(date);//Sat Jan 15 16:01:58 CST 2022
        System.out.println(text);//2022-01-15 16:01:58
    }
}

2.3 练习

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

/*
练习:
    请使用日期时间相关的API,计算出一个人已经出生了多少天。
分析:
    1.使用Scanner类中的方法next,获取出生日期
    2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
    3.把Date格式的出生日期转换为毫秒值
    4.获取当前的日期,转换为毫秒值
    5.使用当前日期的毫秒值-出生日期的毫秒值
    6.把毫秒值得差值转换为天(s/1000/60/60/24)
 */
public class Demo02Test {
    public static void main(String[] args) throws ParseException {
        //1.使用Scanner类中的方法next,获取出生日期
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的出生日期,格式为yyyy-MM-dd");
        String text = scanner.next();

        //2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(text);

        //3.把Date格式的出生日期转换为毫秒值
        long birthTime = date.getTime();

        //4.获取当前的日期,转换为毫秒值
        long todayTime = new Date().getTime();

        //5.使用当前日期的毫秒值-出生日期的毫秒值
        long time = todayTime - birthTime;

        //6.把毫秒值得差值转换为天(s/1000/60/60/24)
        System.out.println("活了" + time/1000/60/60/24 + "天");
    }

2.5 日历类

/*
    java.util.Calendar类:日历类
    Calendar类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)
    Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象
    static Calendar getInstance() 使用默认时区和语言环境获得一个日历
 */
public class Demo01Calendar {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();//多态
        System.out.println(c);
    }
}

import java.util.Calendar;
import java.util.Date;

/*
    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对象。
    成员方法的参数:
        int fieLd:日历类的字段,可以使用Calendar类的静态成员变量获取
        public static final int YEAR = 1;年
        public static final int MONTH = 2;月
        public static final int DATE = 5;月中的某一天
        public static final int DAY_OF_MONTH = 5;月中的某一天
        public static final int HOUR = 10;时
        public static final int MINUTE = 12;分
        public static final int SECOND = 13;秒
 */
public class Demo02Calendar {
    public static void main(String[] args){
        demo01();
        demo02();
        demo03();
        demo04();
    }
    /*
    public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量〉的Date对象。
    把日历对象,转换为日期对象
     */
    private static void demo04() {
        Calendar c = Calendar.getInstance();
        Date date = c.getTime();
        System.out.println(date);
    }

    /*
    public abstract void add(int field,int amount);根据日历的规则,为给定的日历字段添加或减去指定的时间量。把指定的字段增加/减少指定的值
    参数:
        int field:传递指定的日历字段(YEAR,MONTH. . . )
        int amount:增加/减少的值
        正数:增加
        负数:减少

     */
    private static void demo03() {
        Calendar c = Calendar.getInstance();
        //把年增加2年
        c.add(Calendar.YEAR, 2);
        //把月减少3个月
        c.add(Calendar.MONTH, -3);

        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);
        int date = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(date);

    }
    /*
        public void set(int field, int value):将给定的日历字段设置为给定值。
        参数:
            int field:传递指定的日历字段(YEAR,MONTH……)
            int value:传递的字段设置的具体的值
     */

    private static void demo02() {
        Calendar c = Calendar.getInstance();
        //设置年为9999
        c.set(Calendar.YEAR, 9999);
        //设置月为9
        c.set(Calendar.MONTH, 9);
        //设置日为9
        c.set(Calendar.DATE, 9);

        //同时设置年月日,可以使用set的重载方法
        c.set(8888, 8, 8);

        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);
        int date = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(date);

    }

    /*
        public int get(int field):返回给定日历字段的值。
        参数:传递指定的白历字段(YEAR , MONTH. . . )
        返回值:日历字段代表具体的值

     */
    private static void demo01() {
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        System.out.println(year);

        int month = c.get(Calendar.MONTH);
        System.out.println(month + 1);// 西方的月份0-11,东方1-12

        //int date = c.get(Calendar.DATE);
        int date = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(date);
    }
}

第三章 System类

import java.util.Arrays;

/*
    java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在system类的API文档中,常用的方法有:
        - public static long currentTimeMillis( ):返回以毫秒为单位的当前时间。
        - public static void arraycopy(Object src, int srcPos, object dest, int destPos, int length);
            将数组中指定的数据拷贝到另一个数组中。

 */
public class Demo01System {
    public static void main(String[] args){
        demo01();
        demo02();
    }
    /*
    public static void arraycopy(Object src, int srcPos, object dest, int destPos, int length);
    将数组中指定的数据拷贝到另一个数组中。
    参数:
        src -源数组。
        srcPos -源数组中的起始位置。
        dest -目标数组。
        destPos -自标数据中的起始位置。
        Length -要复制的数组元素的数量。
    练习:
        将src数组中前3个元素,复制到dest数组的前3个位置上
        复制元素前:src数组元素[1,2,3,4,5], dest数组元素[6,7,8,9,10]
        复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]

     */
    private static void demo02() {
        int[] src = {1, 2, 3, 4, 5};
        int[] dest = {6, 7, 8, 9, 10};
        System.out.println("复制前:" + Arrays.toString(src));//[1, 2, 3, 4, 5]
        System.arraycopy(src, 0, dest, 0,3);
        System.out.println("复制后:" + Arrays.toString(dest));//[1, 2, 3, 9, 10]
    }

    /*
    public static Long currentTimeMillis():返回以毫秒为单位的当前时间。
    用来测试程序的效率
    练习:
        验证for循环打印数字1-9999所需要使用的时间(毫秒)

     */
    private static void demo01() {
        //程序执行前,获取一次毫秒值
        long s = System.currentTimeMillis();
        //执行for循环
        for (int i = 1; i <= 9999; i++) {
            System.out.println(i);
        }
        long e = System.currentTimeMillis();
        System.out.println("程序共耗时:" + (e - s) + "毫秒");//程序共耗时:97毫秒
    }
}

第三章 StringBuilder类

在这里插入图片描述

/*
    java .Lang. stringBuilder类:字符串缓冲区,可以提高字符串的效率构造方法:
        - public StringBuilder():构造一个空的StringBuilder容器。
        - public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。
 */
public class Demo01StringBuilder {
    public static void main(String[] args) {
        StringBuilder bu1 = new StringBuilder();
        System.out.println("bu1 = " + bu1);//bu1 =

        StringBuilder bu2 = new StringBuilder("Hello");
        System.out.println("bu2 = " + bu2);//bu2 = Hello
    }
}

/*
    StringBuilder类的成员方法:
        public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
        参数:
            可以是任意的数据类型

 */
public class Demo02StringBuilder {
    public static void main(String[] args) {
        StringBuilder bu1 = new StringBuilder();

        //使用append方法返回的是this,调用方法的对象是bu1
        StringBuilder bu2 = bu1.append("abc");
        System.out.println(bu1);//abc
        System.out.println(bu2);//abc
        System.out.println(bu1 == bu2);//true 两个对象是同一个对象
    }
}
/*
    StringBuilder和String可以相互转换:
        String->StringBuilder:可以使用StringBuilder的构造方法
            StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。
        StringBuilder->String:可以使用StringBuilder中的toString方法
            public String toString( ):将当前stringBuilder对象转换为String对象。

 */
public class Demo03StringBuilder {
    public static void main(String[] args) {
        String str = "Hello";
        System.out.println("str: " + str);
        StringBuilder bu = new StringBuilder(str);
        bu.append("World");
        System.out.println("bu: " + bu);

        String s = bu.toString();
        System.out.println("s: " + s);
    }
}

第五章 包装类

5.1 概述

Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:

基本类型对应的包装类(位于java.lang包中)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

包装类概念:
基本数据类型的数据,使用起来非常的方便,但是没有对应的方法来操作这些数据,所以我们可以使用一个类把基本类型的数据包装起来这个类叫包装类,在包装类中可以定义—些方法用来操作基本类型的数据。

5.2 装箱与拆箱

基本类型与对应的包装类对象之间,来回转换的过程称为"装箱"与"拆箱”︰

  • 装箱:从基本类型转换为对应的包装类对象。
  • 拆箱:从包装类对象转换为对应的基本类型。
    用Integer与int为例:(看懂代码即可)
/*
    装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
        构造方法:
            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 Demo01Integer {
    public static void main(String[] args) {
        Integer in1 = new Integer(1);//方法上有横线,说明方法过时了
        System.out.println(in1);//1 重写了toString方法

        Integer in2 = new Integer("1");
        System.out.println(in2);//1

        //静态方法
        Integer in3 = Integer.valueOf(1);
        System.out.println(in3);//1

        Integer in4 = Integer.valueOf("1");
        //Integer in4 = Integer.valueOf("a");//NumberFormatException数字格式化异常
        System.out.println(in4);//1

        //拆箱:在包装类中取出基本类型的数据(包装类-->基本类型的数据)
        int i = in1.intValue();
        System.out.println(i);//1
    }
}

5.3 自动装箱与自动拆箱

import java.util.ArrayList;

/*
    自动装箱与自动拆箱:
        基本类型的数据和包装类之间可以自动的相互转换
        JDKi.5之后出现的新特性
 */
public class Demo02Integer {
    public static void main(String[] args) {
        /*
        自动装箱:直接把int类型的整数赋值给包装类
            Integer in = 1;就相当于Integer in = new Integer(1);
         */
        Integer in = 1;
        /*
        自动拆箱:in是包装类,无法直接参与运算,可以自动转换为基本类型的数据,再参与计算
        in + 2;就相当于in.intValue() + 3 = 3;
        in - in +2;就相当于in - new Integer(3)自动装箱
         */
        in = in + 2;
        System.out.println(in);//3

        //ArrayList集合无法直接存储整数,可以存储Integer包装类
        ArrayList<Integer> list = new ArrayList<>();

        list.add(1);//自动装箱list.add(new Integer(1));
        int a = list.get(0);//自动拆箱List.get(0).intValue();

    }

}

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

** 基本类型转换为String**
基本类型转换String总共有三种方式,查看课后资料可以得知,这里只讲最简单的一种方式:

基本类型直接与""相连接即可;如:34+""

String转换成对应的基本类型
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型︰

  • public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
  • public static short parseShort(String s):将字符串参数转换为对应的short基本类型。
  • public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
  • public static long parseLong(String s):将字符串参数转换为对应的long基本类型。
  • public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。
  • public static double parseDouble(String s)∶将字符串参数转换为对应的double基本类型。
  • public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。
    代码使用(仅以Integer类的静态方法parseXxx为例)如:
/*
    基本类型与字符串之间的转换
    基本类型-->字符串
        1.基本类型数据的值+""最简单的方式(工作中常用)
        2.使用包装类中的静态方法
            static String toString(int i)返回一个表示指定整数的 String 对象。
        3.使用String类中的静态方法
            static String valueOf(int i)返回int参数的字符串表示形式。
    字符串-->基本类型
        使用包装类的静态方法parseXxx("字符串")
            Integer类:   static int parseInt( String s)
            Double类:    static double parseDouble(String s)
            ……
 */
public class Demo03Integer {
    public static void main(String[] args) {
        //基本类型-->字符串
        String s1 = 100 + "";
        System.out.println(s1 + 200);//100200

        String s2 = Integer.toString(100);
        System.out.println(s2 + 200);//100200

        String s3 = String.valueOf(100);
        System.out.println(s3 + 200);//100200

        //字符串-->基本类型
        int i = Integer.parseInt("100");
        System.out.println(i + 200);//300

//        int i2 = Integer.parseInt("a");//NumberFormatException数字化格式异常
//        System.out.println(i2);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值