Java读书笔记二(封装类)

简介:

 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也为我们提供了方面的函数进行操作。







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5286672.html,如需转载请自行联系原作者

相关文章
|
2天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
19天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
11天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
16天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
20天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
24天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
24天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
24天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
27 3
|
27天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
23 5
下一篇
无影云桌面