No7.基本数据类型的包装类
知识点:
1.基本数据类型包装类的定义:
2.数据的装箱与拆箱;
3.数据类型的转换;
具体内容:
1.认识包装类:
java最初设计的基本原则是:一切皆对象,一切的操作都要求用对象的形式进行描述。但是这会出现一个矛盾,即基本类型不是对象。那么为了符合原则,所以最初就是利用认为的方式来解决这种问题的。
代码:
package 面试题目;public class MyInt { //一个类private int num; //这个类包装的基本数据类型//构造的目的是为了将基本数据类型传递给对象public MyInt(int num){ //将基本类型包装类this.num = num;}public int intValue(){ //将包装的数据内容返回return this.num;}}
package 面试题目;public class TestDemo {public static void main(String[] args) {MyInt mi = new MyInt(10); //将Int包装为类int temp = mi.intValue(); //将数据中包装的内容取出System.out.println(temp*2);}}
以上的转变是比较容易实现了,java为了方便用户的使用,所以专门提供了一组包装类,来包装所有的基本类型。
基本类型的数据有:byte(Byte)、short(Short)、int(Integer)、long(Long)、float(Folat)、double(Double)、char(Character)、boolean(Boolean)。
包装类的两种类型:
对象型包装类(Object直接子类):Character、Boolean
数值型包装类(Number直接子类):Byte、Short、Integer、Float、Double、Long
Number是一个抽象类,里面一共定义了六个操作方法:intValue()、doubleValue()、floatValue()、byteValue()、shortValue()、longValue()
2.装箱与拆箱
现在已经存在有基本数据类型与包装类了,那么这两种变量之间的转换就通过一下方式定义:
- 装箱操作:将基本数据类型变化为包装类的形式
每个包装类的构造方法都可以接收各自的类型的变量;
- 拆箱操作:从包装类中取出被包装的数据;
利用Number类中提供的一系列的:xxxValue()方法完成;
范例:使用Int和Integer
package 面试题目;public class TestDemo {public static void main(String[] args) {Integer obj = new Integer(10); //将基本类型装箱int temp = obj.intValue(); //将基本类型拆箱System.out.println(temp*2);}}
之前编写的是MyInt类,现在换成了Integer这个系统类。
范例:使用double和Double
package 面试题目;public class TestDemo {public static void main(String[] args) {Double obj = new Double(10.2); //将基本类型装箱Double temp = obj.doubleValue(); //将基本类型拆箱System.out.println(temp*2);}}
范例:boolean和Boolean(不是Number子类)
package 面试题目;public class TestDemo {public static void main(String[] args) {Boolean obj = new Boolean(true); //将基本类型装箱Boolean temp = obj.booleanValue(); //将基本类型拆箱System.out.println(temp);}}
以上统一的操作是JDK1.5的。在jdk1.5以后提供了自动装箱与自动拆箱机制,并且可以直接利用包装类的对象进型数学计算。
范例:自动装箱与自动拆箱
package 面试题目;public class TestDemo {public static void main(String[] args) {Integer obj = 10; //自动装箱int temp = obj; //自动拆箱obj++ ; //包装类直接进行数学计算System.out.println(temp*obj);}}
如果可以直接利用包装类进行计算,那么就省略勒手工的拆箱部分。
注意:Integer类对象身上发现可以直接赋予内容,也可以利用构造方法?
package 面试题目;public class TestDemo {public static void main(String[] args) {Integer obja = 10; //直接赋值Integer objb = 10;Integer objc = new Integer(10);System.out.println(obja == objb); //trueSystem.out.println(obja == objc); //falseSystem.out.println(objb == objc); //falseSystem.out.println(objc.equals(obja)); //true}}
判断内容是否相同需要使用equals()方法。
提示:Object可以统一天下了
Object可以接受一切的引用数据类型,但是由于存在有自动装箱机制,那么Object也可以存放基本类型了。
流程:基本数据类型——>自动装箱(成为对象)——>向上转向为Object
package 面试题目;public class TestDemo {public static void main(String[] args) {Object obj = 10; //先包装再转换//Object不可能直接向下转向为intint temp =(Integer)obj; //向下转向为IntegerSystem.out.println(temp*2);}}
doubel
package 面试题目;public class TestDemo {public static void main(String[] args) {Double obj = 10.0;//这里直接写10会被认为是int,因此必须写10.0System.out.println(obj*2);}}
boolean
package 面试题目;public class TestDemo {public static void main(String[] args) {Boolean flag = true ; //自动装箱if(flag){ //直接拆箱判断System.out.println("hello world!");}}}
有了以上的自动装箱和拆箱支持之后,在数据类型的选择上就方便了许多。
3.数据类型转换(核心)
包装类使用最多的是其数据类型转换功能,里面有将String数据变为基本类型的方法。
Integer类:public static int parseInt(String s);
Double类:public static double parseDouble(String s);
Boolean类:public static boolean parseBoolean(String s);
特别注意的是Character类里面并不存在有字符为字符的方法,因为String类有一个charAt()的方法可以更具索引取出字符内容。
范例:将字符串变为int型数据
package 面试题目;public class TestDemo {public static void main(String[] args) {String str = "123";int temp = Integer.parseInt(str);System.out.println(temp*2);}
}
此时实现了字符串变为基本类型的操作,但是在这样的转换过程中请一点光要注意:转换成数字的字符串一定要由数字组成。
范例:错误代码
package 面试题目;public class TestDemo {public static void main(String[] args) {String str = "1a23";int temp = Integer.parseInt(str);System.out.println(temp*2);}
}
Exception in thread "main" java.lang.NumberFormatException: For input string: "1a23"
范例:观察Doubel转换
package 面试题目;public class TestDemo {public static void main(String[] args) {String str = "1.23";Double temp = Double.parseDouble(str);System.out.println(temp*2);}
}
没有小数点也可以转换。
范例:观察boolean转换
package 面试题目;public class TestDemo {public static void main(String[] args) {String str = "true";Boolean flag = Boolean.parseBoolean(str);if(flag){System.out.println("**满足条件!**");} else{System.out.println("**不满足条件!**");}}
}
如果进行转换的时候,boolean对象不是true或者false,那么统一进行false处理。
基本类型变为字符串:
两种做法:方式一:任何基本数据类型与字符串使用了"+"操作之后都表示变为字符串;
package 面试题目;public class TestDemo {public static void main(String[] args) {int num = 100;String str = num+"";System.out.println(str.replaceAll("0","6"));}
}
这样的操作虽然可以简单的完成,但是会存在有垃圾问题(" ")。
方式二:public static String valueOf(数据类型 变量);
package 面试题目;public class TestDemo {public static void main(String[] args) {int num = 100;String str = String.valueOf(num);System.out.println(str.replaceAll("0","6"));}
}
总结:1.jdk1.5之后才会提供自动装箱与拆箱操作。
2.字符串与基本类型的相互转换:
- 字符串变为基本类型,依靠包装类的parseXxx()方法
- 基本数据类型变为字符串,依靠String.valueOf(基本数据类型) 方法。
No7.基本数据类型的包装类相关推荐
- java基本数据类型自动转包装类_java基本数据类型和包装类相互转换
把基本数据类型 → 包装类: 通过对应包装类的构造方法实现 除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象. 包装类 → 基本数据类型 包装类的实例方法xxxValue() ...
- java基本数据类型和包装类相互转换
把基本数据类型 → 包装类: 通过对应包装类的构造方法实现 除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象. 包装类 → 基本数据类型 包装类的实例方法xxxValue() ...
- 基本数据类型、包装类、String三者之间的相互转换
package com.wdl.day13;import org.junit.Test;/** 包装类的使用:* 1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征** ...
- 包装类转换基本数据类型与基本数据类型转换为包装类
包装类转换基本数据类型 基本数据类型转换为包装类 新特性: 自动装箱(基本数据类型转换为包装类): 自动拆箱(包装类转换基本数据类型): 基本数据类型.包装类向String 的转换 方式1:连接运算 ...
- (JAVA)基本数据类型 对象包装类
package com.book.lite;/*** @author zhangyu* @date 2021年08月15日 4:51 下午* 基本数据类型 对象包装类* 对八个基本数据类型,提供8个类 ...
- 第 1-2 课:你不知道的基础数据类型和包装类 + 面试题
基本数据类型 Java 基础数据按类型可以分为四大类:布尔型.整数型.浮点型.字符型,这四大类包含 8 种基础数据类型. 布尔型:boolean 整数型:byte.short.int.long 浮点型 ...
- java泛型一定用包装类_你不知道的基本数据类型和包装类
你不知道的基本数据类型和包装类 基本数据类型 Java 基本数据按类型可以分为四大类:布尔型.整数型.浮点型.字符型,这四大类包含 8 种基本数据类型.布尔型:boolean 整数型:byte.sho ...
- Java基本数据类型及其包装类
Java基本数据类型及其包装类 正文开始@Assassin 目录 Java基本数据类型及其包装类 1. 基本类型包装类概述: 1.1 基本数据类型和包装类型的区别: 1.2 各包装类的一些基本的属性: ...
- java基本数据类型自动转包装类_Java基础教程之基本类型数据类型、包装类及自动拆装箱...
前言 我们知道基本数据类型包括byte, short, int, long, float, double, char, boolean,对应的包装类分别是Byte, Short, Integer, L ...
最新文章
- C++/C++11中std::runtime_error的使用
- .NET中,字符串首字母大写的方法
- 用pv操作描述如下前驱图_LinkedList实现分析(二)——常用操作
- opencv (一) 学习通过OpenCV图形界面及基础
- Could not load TestContextBootstrapper [null]. Specify @BootstrapWith‘s ‘value‘ attribute...
- python语言实现reverse函数翻转字符串_python 实现字符串反转的几种方法
- 刚嘲讽过iPhone 12,三星就打算“抄”了:取消赠送充电头和耳机?
- 1.1.0-简介-P3-CAP 分布式 高可用
- linux经典脚本实例,Linux常用Shell脚本珍藏
- webpack使用优化(基本篇
- oracle查看表空间里具体一张表的大小
- 2019新版《龙果学院JavaEE秒杀系统企业级实战应用教程》
- 清空html输入框,jquery清空textarea等输入框
- 算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕
- win10老是弹出计算机管理器,win10系统Ie11老是弹出“管理加载项”提示框取消的处理办法...
- Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略
- 计算机应用基础第三版练习题答案,计算机应用基础练习题答案
- 让字体变的更清晰CSS 中 -webkit-font-smoothing
- AURIX TC397 SCU 之 Watchdog 看门狗
- 1、Go爬虫(http、goquery和colly)