(17)Java中的封装类
封装类简介
- 什么是封装类:也叫包装类。为了能将基本类型转化为对象进行处理,并能连接相关的方法,Java为每个基本数据类型都提供了包装类,这样便可以把这些基本类型转换为对象来进行处理了。需要说明的是,Java是可以直接处理基本数据类型的,但在有些情况下需要将其作为对象来处理,这时就需要将其转换为包装类了。
什么是API:Application Programming Interface,应用程序编程接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细。
封装类有哪些:
- 基本数据类型:byte<short<char<int<long<float<double。boolean。
- 八种包装类(对象不分大小):除了char对应Character,int对应Integer,其他的包装类都是把基本数据类型的首字母大写。
为什么存在基本数据类型和封装类型呢?
Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象;但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在栈中,因此更加高效。
有了基本类型之后为什么还要有包装器类型呢?我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
另外当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。
这两种类型可以相互转换。
- 两种类型的区别:
声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
存储方式及位置不同,基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null
使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。
Integer
**概念:**Integer类在对象中包装了一个基本类型int的值。该类的对象包含一个int类型的字段。此外,该类提供了多个方法,能在int类型和String类型之间相互转换,同时还提供了其他一些处理int类型时非常有用的常量和方法。
常用方法
方法:byteValue();返回值:byte;功能描述:以 byte 类型返回该 Integer 的值。
方法:compareTo(Integer anotherInteger);返回值:int;功能释义:在数字上比较两个 Integer 对象。
public static void main(String[] args) {Integer integer = new Integer(156);int ct1 = integer.compareTo(new Integer(155));int ct2 = integer.compareTo(new Integer(156));int ct3 = integer.compareTo(new Integer(157));System.out.println("ct1="+ct1);System.out.println("ct2="+ct2);System.out.println("ct3="+ct3);}//执行结果ct1=1ct2=0ct3=-1
方法:equals(Object obj);返回值:boolean;功能释义:比较此对象与指定对象。
方法:intValue();返回值:int;功能释义:以 int 类型返回该 Integer 的值。
方法:shortValue();返回值:short;功能释义:以 short 类型返回该 Integer 的值。
方法:toString();返回值:String;功能释义:返回一个表示该 Integer 值的 String 对象。
方法:valueOf(String s);返回值:static Integer;功能释义:返回保存指定的 String 的值的 Integer 对象。
方法:valueOf(int i);返回值:static Integer;功能释义:返回一个表示指定的 int 值的 Integer 实例。
Integer i = Integer.valueOf(456);//将基本数据类型转化为包装类
方法:valueOf(String s, int radix);返回值:static Integer;功能释义:返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。其中,radix表示字符串的进制。最后结果是十进制的数。
方法:parseInt(String s);返回值:static int;功能释义:将字符串参数作为有符号的十进制整数进行解析。
public static void main(String[] args) {String[] str = {"55","41","10","8","-6","33","18"};int sum = 0;for (int i = 0; i < str.length; i++) {//将包字符串类型转化为基本数据类型sum += Integer.parseInt(str[i]);}System.out.println("数组中的各元素之和是:"+sum);}//执行结果数组中的各元素之和是:159
方法:parseInt(String s, int radix);返回值:static int;功能释义:使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
方法:toBinaryString(int i);返回值:static String;功能释义:以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
方法:toHexString(int i);返回值:static String;功能释义:以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
方法:toOctalString(int i);返回值:static String;功能释义:以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
方法:toString(int i);返回值:static String;功能释义:返回一个表示指定整数的 String 对象。
自动拆装箱:基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。
- 基本数据类型的自动装箱功能//一般我们要创建一个类的对象实例的时候,我们会这样:BBB bbb = new BBB();//当我们创建一个Integer对象时,却可以这样:Integer i = 100; //(注意:不是 int i = 100; )//实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = Integer.valueOf(100); - 自动拆箱(unboxing),也就是将对象中的基本数据从对象中自动取出。Integer ii = new Integer(200);int b = ii;//执行上面那句代码的时候,系统为我们执行了:int b = i1.intValue();
- 常量
MAX_VALUE:值为 2^31-1 的常量,它表示 int 类型能够表示的最大值。
MIN_VALUE:值为 -2^31 的常量,它表示 int 类型能够表示的最小值。
SIZE:用来以二进制补码形式表示 int 值的比特位数。
TYPE:表示基本类型 int 的 Class 实例。
Boolean
- 构造方法
Boolean(boolean value):分配一个表示 value 参数的 Boolean 对象。
Boolean(String s):当字符串为“true”不分大小写时,得到Boolean对象结果都为true,否则其他的字符串包括null结果都为false。
- 常用方法
方法:booleanValue();返回值:boolean;功能释义:将此 Boolean 对象的值作为基本布尔值返回。
方法:equals(Object obj);返回值:boolean;功能释义:当且仅当参数不是 null,而是一个与此对象一样,都表示同一个 Boolean 值的 boolean 对象时,才返回 true。
方法:parseBoolean(String s);返回值:static boolean;功能释义:将字符串参数解析为 boolean 值。
方法:toString();返回值:String;功能释义:返回表示该布尔值的 String 对象。
方法:valueOf(String s);返回值:static Boolean;功能释义:返回一个用指定的字符串表示值的 Boolean 值。
Byte
- 构造方法
Byte(byte value):构造一个新分配的 Byte 对象,以表示指定的 byte 值。byte为8bit位数。int为32bit位数。
Byte(String s):构造一个新分配的 Byte 对象,以表示 String 参数所指示的 byte 值。
- 常用方法
方法:byteValue();返回值:byte;功能释义:作为一个 byte 返回此 Byte 的值。
方法:compareTo(Byte anotherByte);返回值:int;功能释义:在数字上比较两个 Byte 对象。
方法:doubleValue();返回值:double;功能释义:作为一个 double 返回此 Byte 的值。
方法:intValue();返回值:int;功能释义:作为一个 int 返回此 Byte 的值。
方法:parseByte(String s);返回值:static byte;功能释义:将 string 参数解析为有符号的十进制 byte。
方法:toString();返回值:String;功能释义:返回表示此 Byte 的值的 String 对象。
方法:valueOf(String s);返回值:static Byte;功能释义:返回一个保持指定 String 所给出的值的 Byte 对象。
方法:equals(Object obj);返回值:boolean;功能释义:将此对象与指定对象比较。
Character
Character类:Character类在对象中包装一个基本类型为char的值。一个Character类型对象包含类型为char的单个字段。该类提供了几种方法,以确定字符的类别(小写字母、数字等),并将字符从大写转换成小写,反之亦然。
- 构造方法
- Character(char value):构造一个新分配的 Character 对象,用以表示指定的 char 值。一旦Character类被创建,它包含的数值就不能改变了。
- 常用方法
方法:charValue();返回值:char;功能释义:返回此 Character 对象的值。
方法:compareTo(Character anotherCharacter);返回值:int;功能释义:根据数字比较两个 Character 对象。
//先转化成阿斯克吗中的数字,然后比较,那要这个数减去要比较的数,得出结果!Character character1 = new Character('c');//99Character character2 = new Character('a');//97Character character3 = new Character('c');//99Character character4 = new Character('d');//100System.out.println("character="+character1);System.out.println(character1.compareTo(character2));System.out.println(character1.compareTo(character3));System.out.println(character1.compareTo(character4));//执行结果character=c20-1
方法:equals(Object obj);返回值:boolean;功能释义:将此对象与指定对象比较。
方法:toUpperCase(char ch);返回值:static char;功能释义:将字符参数转换为大写。
方法:toLowerCase(char ch);返回值:static char;功能释义:将字符参数转换为小写。
方法:toString();返回值:String;功能释义:返回表示此 Character 值的 String 对象。
方法:isUpperCase(char ch);返回值:static boolean;功能释义:确定指定字符是否为大写字母。
方法:isLowerCase(char ch);返回值:static boolean;功能释义:确定指定字符是否为小写字母。
方法:isLetter(char ch);返回值:static boolean;功能释义:确定指定字符是否为字母。
方法:isDigit(char ch);返回值:static boolean;功能释义:确定指定字符是否为数字。
方法:isWhitespace(char ch);返回值:static boolean;功能释义:确定指定字符依据 Java 标准是否为空白字符。
方法:valueOf(char c);返回值:static Character;功能释义:返回一个表示指定 char 值的 Character 实例。
方法:isLetterOrDigit(char ch);返回值:static boolean;功能释义:确定指定字符是否为字母或数字。
Double
- 构造方法
Double(double value):构造一个新分配的 Double 对象,它表示基本的 double 参数。
Double(String s):构造一个新分配的 Double 对象,表示用字符串表示的 double 类型的浮点值。
Double d = new Double(20.3);Double d2 = new Double("20.55");//注意:传入的字符串必须是数字型的,否则会抛出NumberFormatException异常。
常用方法
方法:byteValue();返回值:byte;功能释义:以 byte 形式返回此 Double 的值(通过强制转换为 byte)。
方法:compare(double d1, double d2);返回值:static int;功能释义:比较两个指定的 double 值。
方法:equals(Object obj);返回值:boolean;功能释义:将此对象与指定对象比较。
方法:intValue();返回值:int;功能释义:以 int 形式返回此 Double 的值(通过强制转换为 int 类型)。
方法:isNaN();返回值:boolean;功能释义:如果此 Double 值是非数字(NaN)值,则返回 true;否则返回 false。
方法:isNaN(double v);返回值:static boolean;功能释义: 如果指定的数是一个 NaN 值,则返回 true;否则返回 false。
方法:toString();返回值:String;功能释义:返回此 Double 对象的字符串表示形式。
方法:valueOf(String s);返回值:static Double;功能释义:返回保存用参数字符串 s 表示的 double 值的 Double 对象。
方法:doubleValue();返回值:double;功能释义:返回此 Double 对象的 double 值。
方法:longValue();返回值:long;功能释义:以 long 形式返回此 Double 的值(通过强制转换为 long 类型)。
方法:compareTo(Double anotherDouble);返回值:int;功能释义:对两个 Double 对象所表示的数值进行比较。
Number
Number类:抽象类 Number 是 BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short 类的父类。Number 的子类必须提供将表示的数值转换为 byte、double、float、int、long 和 short 的方法。Number类中的方法分别被Number的子类所实现,也就是说,在Number类的所有子类中都包含这些方法。
常用方法
方法:byteValue();返回值:byte;功能释义:以 byte 形式返回指定的数值。
方法:intValue();返回值:abstract int;功能释义:以 int 形式返回指定的数值。
方法:floatValue();返回值:abstract float;功能释义:以 float 形式返回指定的数值。
方法:shortValue();返回值:short;功能释义:以 short 形式返回指定的数值。
方法:longValue();返回值:abstract long;功能释义:以 long 形式返回指定的数值。
方法:doubleValue();返回值:abstract double;功能释义:以 double 形式返回指定的数值。
下一章,(18)Java中的数字处理类
(17)Java中的封装类相关推荐
- Java语言中提供了三个日期类_Java语言学习(5)-Java中基础封装类(日期、时间类)...
日期和时间封装类 1. Data类 Java日期和时间采用Data类.Data类在java.util包中. Data类构造函数: 1) Data() 采用当前时间初始化对象: 2) ...
- 在java中为什么_属性绑定到类型_方法绑定到对象_13. Java基础之类型信息(RTTI和反射)...
一. Java反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据"类的部分已经的信息"来还原"类的全部的信息".这里"类的部 ...
- java integer最大值_五分钟学会java中的基础类型封装类
在刚刚学习java的时候,老师不止一次的说过java是一种面向对象的语言,万物皆对象.对于java中的基础数据类型,由于为了符合java中面向对象的特点,同样也有其封装类.这篇文章对其有一个认识. 一 ...
- java 中封装类有哪些_java中封装类(一)
java中封装类共九个,分别是Boolean,Byte,Short,Integer,Long,Float,Double,Character,Void 其中Void对于使用者并无多大意义,也不可以构造任 ...
- Java中八种基本数据类型的大小,以及他们的封装类
Java中八种基本数据类型的大小,以及他们的封装类 1.int是基本数据类型,Integer是int的封装类,是引用类型. int默认值是0,而Integer默认值是null, 所以Integer能区 ...
- java中为什么要封装_Java中为什么要为基本类型提供封装类呢?
例如int与Integer的区别: int 是基本数据类型 Integer是其包装类,注意是一个类. 为什么要提供包装类呢??? 一是为了在各种类型间转化,通过各种方法的调用.否则 你无法直接通过变量 ...
- 原来java有这么多把锁,图解java中的17把锁
乐观锁和悲观锁 独占锁和共享锁 互斥锁和读写锁 公平锁和非公平锁 可重入锁 自旋锁 分段锁 锁升级(无锁|偏向锁|轻量级锁|重量级锁) 锁优化技术(锁粗化.锁消除) 1.悲观锁 悲观锁对应于生活中悲观 ...
- 17、Java中的面向对象的编程思想
Java中的面向对象的编程思想 作者:韩茹 公司:程序咖(北京)科技有限公司 程序咖:IT职业技能评测平台 网址:https://www.chengxuka.com 任务 1. 面向对象 2. 面向过 ...
- Java中的继承与组合
本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别.首先文章会给出一小段代码示例,用于展示到底什么是继承.然后演示如何通过"组合"来改进这种继承的设计机制.最后总结这 ...
最新文章
- Composer 安装(一)
- Dojo-API介绍
- 江苏计算机专业,行情火爆的计算机专业:江苏计算机专业高校最低录取分排序...
- 基于JAVA+SpringBoot+Mybatis+MYSQL的电影院管理系统
- java取负数_阿里巴巴 Java 开发手册之MySQL 规约
- 解决element el-pagination分页最后一页数据清空了页码显示正确,但是列表为空
- 解决对象转json字符串时对象属性不按对象属性顺序的问题
- pdfFactory和pdfFactory Pro有什么不同
- 三种健身妙法-每天五分钟简便易行有宏效
- 计算机主机电源连接,七个步骤教你主机电源如何接线
- WUST-CTF2020 writeup
- Variable used in lambda expression should be final or effectively final报错解决方案
- AMD,在竞争中蜕变!
- 华东之旅--西塘第二天
- KSO-docker命令大全,基于Linux服务器CentOS7.5 安装docker
- 固态硬盘为什么比机械硬盘快
- Unity动态构建Mesh来绘制任意多边形(雷达图效果)
- 设计模式之SOLID原则
- 致小班:无论身处何方,一定要怀揣着一颗上进的心
- idea断点调试,调试结束后,下次无法进入断点