1.介绍

都知道java中基本数据类型有非常多,比方string,int……,可是基本数据类型与对象之间是不同的。但非常多情况下,我们希望将基本数据类型当作对象使用,这时候就须要用到封装类。

2.封装类对象基本知识

2.1.首先封装类对象有自己的几个特性。

1.对象不可变,是属于final类型的对象

2.不同意继承

2.2.怎样创建封装类对象

在java中每种数据类型都由其相应的封装类。

每种封装类都有其各自的构造器。

<span style="font-size:18px;"><span style="font-family:SimSun;font-size:18px;">package com.Fengzhuanglei;

public class Sample12_1 {
public static void main(String[] args)
{
//Character类构造器
Character c1=new Character('H');
//打印Character对象
System.out.println("Character封装类对象封装的值为:"+c1+"。");
//Boolean类构造器
Boolean b1=new Boolean(true);
Boolean b2=new Boolean("TRUE");
Boolean b3=new Boolean("FaLsE");
Boolean b4=new Boolean("HaHa!!!");
//打印4个Boolean对象
System.out.print("Boolean封装类对象封装的值为"+b1);
System.out.print("、"+b2);
System.out.print("、"+b3);
System.out.println("、"+b4+"。");
//Float类构造器
Float f1=new Float(12.56f);
Float f2=new Float(12.56);
Float f3=new Float("12.56f");
//打印3个Float对象
System.out.print("Float封装类对象封装的值为:"+f1);
System.out.print("、"+f2);
System.out.println("、"+f3+"。 ");
//其它类型构造器
Integer i1=new Integer(50);
Integer i2=new Integer("50");
System.out.print("Integer封装类对象封装的值为:"+i1);
System.out.println("、"+i2+"。");
Integer i3=new Integer("qq50");
}
}
</span></span>

也能够採用静态工厂的方法来创建

<span style="font-size:18px;"><span style="font-family:SimSun;font-size:18px;">package com.Fengzhuanglei;

public class Sample12_8 {
public static void main(String[] args)
{
//将字符串转换为基本数据类型
double d1=Double.parseDouble("36.8");
System.out.println("将字符串形式转换为double值,其值为:"+d1);
//用基本数据类型创建对象
Double d2=Double.valueOf(36.8);
System.out.println("用double值创建了Double对象,其值为:"+d2);
//用字符串类型创建对象
Double d3=Double.valueOf("36.8");
System.out.println("用字符串创建了Double对象。其值为:"+d3);
//将字符串以三进制形式转换为基本数据类型值
int i1=Integer.parseInt("1011010",3);
System.out.println("将字符串以三进制形式转换为int值,其值为:"+i1);
//用字符串以三进制形式创建对象
Integer i2=Integer.valueOf("1011010",3);
System.out.println("用字符串以三进制形式创建Integer对象,其值为:"+i2);
}
}
</span></span>

3.数据类型之间的转换

3.1.基本数据类型→→→→→→字符串

非静态方法

我们经经常使用到的非静态方法莫过于ToString方法。该方法没有參数,返回值为String类型的字符串操作

<span style="font-size:18px;">package com.Fengzhuanglei;

import java.math.BigInteger;

public class Sample12_14 {
public static void main(String[] args) {
// 创建了两个BigInteger对象bi1与bi2
BigInteger bi1 = new BigInteger("111119223372036854775808");
BigInteger bi2 = new BigInteger("111110000000000000000000");
// 声明了一个BigInteger引用bi3
BigInteger bi3;
System.out.println("bi1 = " + bi1 + "。bi2 = " + bi2 + "。");
// 使用加操作
bi3 = bi1.add(bi2);
System.out.println("bi1 + bi2 = " + bi3);
// 使用减操作
bi3 = bi1.subtract(bi2);
System.out.println("bi1 - bi2 = " + bi3);
// 使用乘操作
bi3 = bi1.multiply(bi2);
System.out.println("bi1 * bi2 = " + bi3);
// 使用除操作
bi3 = bi1.divide(bi2);
System.out.println("bi1 / bi2 = " + bi3);
// 使用求余操作
bi3 = bi1.mod(bi2);
System.out.println("bi1 % bi2 = " + bi3);
// 使用取负数操作
bi3 = bi1.negate();
System.out.println("-bi1 = " + bi3);
// 取bi1的符号
if (bi1.signum() == 1) {
System.out.println("bi1 为正数。其符号为'+'! ! !");
}
// 比較bi1与bi2的大小
if (bi1.compareTo(bi2) > 0) {
System.out.println("bi1 大于 bi2 。。! ");
}
}
}
</span>

静态方法

静态方法就是採用不可变的封装类对象自身的方法,详细例如以下

<span style="font-size:18px;">package com.Fengzhuanglei;

public class Sample12_5 {
public static void main(String[] args)
{
//声明原始值
boolean bl=false;
byte b=-23;
char c='G';
short s=128;
int i=20;
long l=49L;
float f=32.3F;
double d=46.5;
//打印转换前的原始值
System.out.println("=======================转换前的"
+"原始值=========================");
System.out.println("bl="+bl+", b="+b+", c="+c+", s="+s+", i="+i+", l="+l+", f="+f+", d="+d);
//声明5个字符串引用
String s1,s2,s3,s4,s5;
//Boolean封装器提供的静态转换字符串方法
System.out.println("=======================Boolean"
+"封装类=========================");
s1=Boolean.toString(bl);
System.out.println("bl转换后的结果为:"+s1);
//Byte封装器提供的静态转换字符串方法
System.out.println("=======================Byte"
+"封装类============================");
s1=Byte.toString(b);
System.out.println("b转换后的结果为:"+s1);
//Short封装器提供的静态转换字符串方法
System.out.println("=======================Short"
+"封装类===========================");
s1=Short.toString(s);
System.out.println("s转换后的结果为:"+s1);
//Character封装器提供的静态转换字符串方法
System.out.println("=======================Character"+
"封装类=======================");
s1=Character.toString(c);
System.out.println("c转换后的结果为:"+s1);
//Integer封装器提供的静态转换字符串方法;
System.out.println("=======================Integer"+
"封装类=========================");
s1=Integer.toString(i);
//将i值以四进制输出
s2=Integer.toString(i,4);
s3=Integer.toBinaryString(i);
s4=Integer.toOctalString(i);
s5=Integer.toHexString(i);
System.out.println("i转换后为"+s1+" 转换为四进制后为"
+s2+" 转换为二进制后为"+s3);
System.out.println("转换为八进制后为"+s4+" 转换为十六进制后为"+s5);
//Long封装器提供的静态转换字符串方法
System.out.println("=======================Long"
+"封装类============================");
s1=Long.toString(l);
//将l值以四进制输出
s2=Long.toString(l,7);
s3=Long.toBinaryString(l);
s4=Long.toOctalString(l);
s5=Long.toHexString(l);
System.out.println("l转换后为"+s1
+" 转换为七进制后为"+s2+" 转换为二进制后为"+s3);
System.out.println("转换为八进制后为"+s4+" 转换为十六进制后为"+s5);
//Float封装器提供的静态转换字符串方法
System.out.println("=======================Float"
+"封装类===========================");
s1=Float.toString(f);
s2=Float.toHexString(f);
System.out.println("f转换后为"+s1+" 转换为十六进制后为"+s2);
//Double封装器提供的静态转换字符串方法
System.out.println("=======================Double"
+"封装类==========================");
s1=Double.toString(d);
s2=Double.toHexString(d);
System.out.println("d转换后为"+s1+" 转换为十六进制后为"+s2);
}
}
</span>

3.2.字符串→→→→→→基本数据类型

相同字符串与基本数据类型之间的转换也能够採用静态和非静态方法来操作

非静态方法

须要将封装类对象的值提取时。一般採用的是xxxValue中的一系列方法,详细例如以下。

<span style="font-size:18px;">package com.Fengzhuanglei;

public class Sample12_6 {
public static void main(String[] args) {
// 将封装的int值转换为其它数值类型
Integer integer = new Integer("52"); byte b = integer.byteValue();
double d = integer.doubleValue();
System.out
.println("将字符串“52”转换为byte值以及double值,其值为:" + b + "、" + d + "。");
// 将封装的float值转换为其它数值类型
Float floatF = new Float("25.5");
float f = floatF.floatValue();
d = floatF.doubleValue();
System.out.println("将字符串“52”转换为float值以及double值。其值为:" + f + "、" + d
+ "。");
}
}
</span>

静态方法

假设採用静态方法的话。一般採用parseXXX类似的方法。详细例如以下。

<span style="font-size:18px;">package com.Fengzhuanglei;

public class Sample12_7 {
public static void main(String[] args) {
// 将字符串转换为基本数据类型boolean
boolean b = Boolean.parseBoolean("FaLse");
System.out.println("将字符串“FaLse”成功转换为boolean值,其值为:" + b);
// 将字符串转换为基本数据类型double
double d = Double.parseDouble("35.8");
System.out.println("将字符串“35.8”成功转换为double值,其值为:" + d);
// 将字符串中的数字依照二进制的方式解析,并转换为int基本数据类型
int i = Integer.parseInt("10010111", 2);
System.out.println("将字符串“10010111”成功依照二进制形式转换int值,其值为:" + i);
// 将字符串中的数字依照三进制的方式解析,并转换为long基本数据类型
long l = Long.parseLong("10010111", 3);
System.out.println("将字符串“10010111”成功依照三进制形式转换long值,其值为:" + l);
}
}
</span>

4.大型数值计算

在我们寻常的开发中可能有时算数的范围超过了int或者long的范围,此时该怎么办?在java中专门为我们提供了用来进行不大小限制计算的类。

1.BigInteger:用来计算整数之间的操作

<span style="font-size:18px;">package com.Fengzhuanglei;

import java.math.BigInteger;

public class Sample12_14 {
public static void main(String[] args) {
// 创建了两个BigInteger对象bi1与bi2
BigInteger bi1 = new BigInteger("111119223372036854775808");
BigInteger bi2 = new BigInteger("111110000000000000000000");
// 声明了一个BigInteger引用bi3
BigInteger bi3;
System.out.println("bi1 = " + bi1 + ",bi2 = " + bi2 + "。 ");
// 使用加操作
bi3 = bi1.add(bi2);
System.out.println("bi1 + bi2 = " + bi3);
// 使用减操作
bi3 = bi1.subtract(bi2);
System.out.println("bi1 - bi2 = " + bi3);
// 使用乘操作
bi3 = bi1.multiply(bi2);
System.out.println("bi1 * bi2 = " + bi3);
// 使用除操作
bi3 = bi1.divide(bi2);
System.out.println("bi1 / bi2 = " + bi3);
// 使用求余操作
bi3 = bi1.mod(bi2);
System.out.println("bi1 % bi2 = " + bi3);
// 使用取负数操作
bi3 = bi1.negate();
System.out.println("-bi1 = " + bi3);
// 取bi1的符号
if (bi1.signum() == 1) {
System.out.println("bi1 为正数。其符号为'+'!! ! ");
}
// 比較bi1与bi2的大小
if (bi1.compareTo(bi2) > 0) {
System.out.println("bi1 大于 bi2 !!!");
}
}
}
</span>

2.BigDecimal:用来精确的计算浮点数之间的操作

<span style="font-size:18px;">package com.Fengzhuanglei;
import java.math.*;
public class Sample12_16
{
public static void main(String[] args)
{
//分别创建值为3.8与0.7的BigDecimal对象bd1与bd2
BigDecimal bd1=new BigDecimal("3.8");
BigDecimal bd2=new BigDecimal("0.7");
//创建值为3.800的BigDecimal对象bd3
BigDecimal bd3=new BigDecimal("3.800");
//声明一个BigDecimal类型的引用bd4
BigDecimal bd4;
//打印对象bd1、bd2与bd3中封装的值
System.out.println("bd1 = "+bd1+",bd2 = "+bd2+"。bd3 = "+bd3+"。");
//使用加操作
bd4=bd1.add(bd2);
System.out.println("bd1 + bd2 = "+bd4);
//使用减操作
bd4=bd1.subtract(bd2);
System.out.println("bd1 - bd2 = "+bd4);
//使用乘操作
bd4=bd1.multiply(bd2);
System.out.println("bd1 * bd2 = "+bd4);
//使用除操作
bd4=bd1.divide(bd2,BigDecimal.ROUND_HALF_DOWN);
System.out.println("bd1 / bd2 = "+bd4);
bd4=bd3.divide(bd2,BigDecimal.ROUND_HALF_DOWN);
System.out.println("bd3 / bd2 = "+bd4);
//将bd1与bd2进行比較
bd2=new BigDecimal("3.800");
if(bd1.compareTo(bd2)==0)
{
System.out.println("bd1 = "+bd1+" bd2 = "+bd2+" 则bd1与bd2是相等的! !");
}
}
}
</span>

5.总结

本篇主要介绍了java中基本数据类型之间的转换,通常是通过封装类来进行相互之间的转换。另外在做数据算法时。java也为我们提供了方面的函数进行操作。

Java读书笔记二(封装类)的更多相关文章

  1. java读书笔记二

    这是我的一些读书笔记: 我研究了一下面向对象: 面向对象符合人类看待事物的一般规律,对象的方法的实现细节是包装的,只有对象方法的实现者了解细节 我觉得面向过程是由过程.步骤.函数组成,过程是核心,面向 ...

  2. Java 读书笔记 (二) 对象和类

    Java 作为一种面向对象语言,支持以下基本概念: 多态 继承 封闭 抽象 类 对象 实例 方法 重载 对象: 是类的一个实例,有状态和行为.以人为例,黄种人.白种人.黑种人为类,每一个具体的人为类的 ...

  3. head first java读书笔记

    head first java读书笔记 1. 基本信息 页数:689 阅读起止日期:20170104-20170215 2. 标签 Java入门 3. 价值 8分 4. 主题 使用面向对象的思路介绍J ...

  4. think in java 读书笔记 3 —— 数据报

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 数据报基本知识 2 ...

  5. think in java 读书笔记 2 —— 套接字

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 概要 1. 套接字基本知识 2 ...

  6. think in java 读书笔记 1 ——移位

    目录 think in java 读书笔记 1 ——移位 think in java 读书笔记 2 —— 套接字 think in java 读书笔记 3 —— 数据报 在Think in Java中 ...

  7. Thinking In Java读书笔记--对象导论

    Thinking In Java读书笔记--对象导论[对象]服务提供者==>将对象看做一个服务提供者[程序员分类][类创造者]/[客户端程序员] [访问控制存在的原因?][1]客户端程序员无法触 ...

  8. Java读书笔记1

    Java逍遥游记读书笔记 前言 必须先来一句,这是入门级别,高手勿喷~ 写Android的时候总有一些语句不是很理解,其实大部分是Java的内容,所以想系统的学下Java. 这本书——<Java ...

  9. spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,而且IoC Service Pr ...

随机推荐

  1. 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3941172.html,qq:1269122125. 上两章节简要的 ...

  2. SGU 174.wall

    题意: 判断给出的线段是否组成了多边形. Solution: 简单题,并查集+hash 这里用map实现 code #include <iostream> #include <cst ...

  3. 【BZOJ3673】【可持久化并查集】可持久化并查集 by zky

    Description n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n ...

  4. call/apply的第一个参数如果为null。this指向window

    call/apply是用来改变函数的作用域的,第一次参数为this,第二个参数为传输的值,例如 var a ="windowA"; var b = "windowB&qu ...

  5. html中发送邮箱的链接

  6. C#中foreach遍历学习笔记

    using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...

  7. 深入Java虚拟机读书笔记第五章Java虚拟机

    Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...

  8. JS 导出图片,toDataURL

    //输出图片 function exportCanvasAsPNG(id, fileName) { //获取canvas元素 var canvasElement = document.getEleme ...

  9. html embed用法

    (一).基本语法: embed src=url  说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,      Netscape及新版的IE 都支持.u ...

  10. Unable to find the ncurses libraries or the required header files解决

    问题: 解决方法: sudo apt-get install ncurses-dev 参考:Unable to find the ncurses libraries or the required h ...