Java 包装器一口气讲完!(≧∇≦)ノ

ops/2024/10/15 22:13:39/

目录

Java 数据类型包装器

Java数据类型教程 - Java数据类型包装器

方法

例子

valueOf()

Java 数字数据类型

Java数据类型教程 - Java数字数据类型

例子

方法

Java 字符数据类型

Java数据类型教程 - Java字符数据类型

例子

Java Boolean包装类

Java数据类型教程 - Java Boolean包装类

例子


Java 数据类型包装器

Java数据类型教程 - Java数据类型包装器


Java库在java.lang包中提供了八个类来表示八种基本类型中的每一种。

这些类称为包装类,因为它们在对象中包装原始值。

下表列出了原始类型及其相应的包装类。

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

方法

所有包装类都是不可变的。它们提供了两种方法来创建它们的对象:

  • 使用构造函数
  • 使用valueOf()工厂方法

除了Character之外,每个包装类都提供至少两个构造函数:一个采用对应基本类型的值,另一个采用String。

Character类只提供一个接受char的构造函数。

例子

以下代码创建一些包装类的对象:

public class Main {public static void staticMethod() {// Creates an Integer object from an intInteger intObj1 = new Integer(100);// Creates an Integer object from a StringInteger intObj2 = new Integer("1969");// Creates a Double object from a doubleDouble doubleObj1 = new Double(10.45);// Creates a Double object from a StringDouble doubleObj2 = new Double("234.60");// Creates a Character object from a charCharacter charObj1 = new Character("A");// Creates a Boolean object from a booleanBoolean booleanObj1 = new Boolean(true);// Creates Boolean objects from StringsBoolean booleanTrue = new Boolean("true");Boolean booleanFalse = new Boolean("false");}
}

valueOf()

创建包装类对象的另一种方法是使用它们的valueOf()方法。

valueOf()方法是静态的。

下面的代码使用它们的valueOf()方法创建一些包装器类的对象:

public class Main {public static void staticMethod() {Integer  intObj1 = Integer.valueOf(100); Integer  intObj2 = Integer.valueOf("2014"); Double  doubleObj1  = Double.valueOf(10.45); Double  doubleObj2  = Double.valueOf("234.56"); Character charObj1   = Character.valueOf("A");}
}

Java 数字数据类型

Java数据类型教程 - Java数字数据类型

字节,短整数,整数,长整数,浮点数和双精度类是数字包装类。

它们都继承自抽象的Number类。我们不能创建Number类的对象。然而,er可以声明Number类的引用变量。

我们可以将六个数值包装类中的任何一个的对象引用分配给Number类的引用。

Number类包含六个方法。它们被命名为xxxValue(),其中xxx是六种基本数据类型之一(byte,short,int,long,float和double)。

方法的返回类型与xxx相同。

例子

以下代码显示如何从数值包装器对象检索不同的primate类型值:

public class Main {public static void main(String[] args) {Integer intObj = Integer.valueOf(100);// Gets byte from Integerbyte b = intObj.byteValue();// Gets double from Integerdouble dd = intObj.doubleValue();System.out.println("intObj = " + intObj);System.out.println("byte from  intObj = " + b);System.out.println("double from  intObj = " + dd);// Creates a Double objectDouble doubleObj = Double.valueOf("123.45");// Gets different types of primitive values from Doubledouble d = doubleObj.doubleValue();float f = doubleObj.floatValue();int i = doubleObj.intValue();long l = doubleObj.longValue();System.out.println("doubleObj = " + doubleObj);System.out.println("double from  doubleObj   = " + d);System.out.println("float from  doubleObj   = " + f);System.out.println("int from  doubleObj   = " + i);System.out.println("long from  doubleObj   = " + l);}
}

上面的代码生成以下结果。

方法

Java 8在一些数值包装类(如Integer,Long,Float和Double)中添加了一些方法,如sum(),max()和min()。

例如,Integer.sum(10,20)简单地返回10 + 20的结果。

它们的引用用于使用集合的lambda表达式。

包装器类帮助处理包含原始值的字符串。

  • 使用valueOf()方法将字符串转换为包装器对象。
  • 使用parseXxx()方法将字符串转换为原始值。

字节,短整型,整型,长整型,浮点型和双精度型分别包含parseByte(),parseShort(),parseInt(),parseLong(),parseFloat()和parseDouble

以下代码将包含二进制格式的整数的字符串转换为Integer对象和int值:

public class Main {public static void main(String[] args) {String str = "01111111";int radix = 2;// Creates an Integer object from the stringInteger intObject = Integer.valueOf(str, radix);// Extracts the int value from the stringint intValue = Integer.parseInt(str, 2);System.out.println("str = " + str);System.out.println("intObject = " + intObject);System.out.println("intValue = " + intValue);}
}

上面的代码生成以下结果。

所有数值包装类都包含几个有用的常量。它们的MIN_VALUE和MAX_VALUE个常数表示最小值和最大值。它们还具有SIZE常数,其表示对应原始类型的变量占据的位的大小。

以下代码尝试将两个字符串解析为双精度值。

第一个字符串包含有效的double,第二个字符串包含无效的double。当调用parseDouble()方法来解析第二个字符串时,抛出NumberFormatException。

public class Main {public static void main(String[] args) {String str1 = "123.45";try {double value1 = Double.parseDouble(str1);System.out.println("value1 = " + value1);} catch (NumberFormatException e) {System.out.println("Error in parsing " + str1);}String str2 = "8H.9"; // An invalid doubletry {double value2 = Double.parseDouble(str2);System.out.println("value2 = " + value2);} catch (NumberFormatException e) {System.out.println("Error in parsing " + str2);}}
}

上面的代码生成以下结果。

Java 字符数据类型

Java数据类型教程 - Java字符数据类型

Character类的一个对象包装一个char值。

字符类包含isLetter()和isDigit()方法来检查字符是否为字母和数字。

toUpperCase()和toLowerCase()方法将字符转换为大写和小写。

该类提供了一个构造函数和一个工厂valueOf()方法来从char创建对象。

charValue()方法返回对象包装的char。

例子

以下代码显示了如何创建Character对象以及如何使用它们的一些方法:

public class Main {public static void main(String[] args) {// Using the constructorCharacter c1 = new Character("A");// Using the factory method - preferredCharacter c2 = Character.valueOf("2");Character c3 = Character.valueOf("-");// Getting the wrapped char valueschar cc1 = c1.charValue();char cc2 = c2.charValue();char cc3 = c3.charValue();System.out.println("c1 = " + c1);System.out.println("c2 = " + c2);System.out.println("c3 = " + c3);// Using some Character class methods on c1System.out.println("isLowerCase c1    = " + Character.isLowerCase(cc1));System.out.println("isDigit c1    = " + Character.isDigit(cc1));System.out.println("isLetter c1    = " + Character.isLetter(cc1));System.out.println("Lowercase of  c1    = " + Character.toLowerCase(cc1));// Using some Character class methods on c2System.out.println("isLowerCase c2    = " + Character.isLowerCase(cc2));System.out.println("isDigit c2    = " + Character.isDigit(cc2));System.out.println("isLetter c2    = " + Character.isLetter(cc2));System.out.println("Lowercase of  c2    = " + Character.toLowerCase(cc2));System.out.println("Uppercase of  c3    = " + Character.toUpperCase(cc3));}
}

上面的代码生成以下结果。

Java Boolean包装类

Java数据类型教程 - Java Boolean包装类

布尔类的对象包装一个布尔值。

Boolean.TRUE和Boolean.FALSE是布尔类型的两个常量,用于表示布尔值true和false值。

我们可以使用构造函数或valueOf()工厂方法创建一个布尔对象。

当解析字符串时,此类将处理“true”,忽略所有字符的情况为true,任何其他字符串为false。

例子

下面的代码显示了如何使用Boolean类。

public class Main {public static void main(String[] args) {// Using constructorsBoolean b1True = new Boolean(true);Boolean b2True = new Boolean("true");Boolean b3True = new Boolean("tRuE");Boolean b4False = new Boolean("false");Boolean b5False = new Boolean("how  is this"); // false// Using the factory methodsBoolean b6True = Boolean.valueOf(true);Boolean b7True = Boolean.valueOf("true");Boolean b8True = Boolean.valueOf("tRuE");Boolean b9False = Boolean.valueOf("false");Boolean b10False = Boolean.valueOf("how is this"); // false// Getting a boolean value from a Boolean objectboolean bbTrue = b8True.booleanValue();boolean bTrue = Boolean.parseBoolean("true");boolean bFalse = Boolean.parseBoolean("This string evaluates to false");Boolean bcTrue = Boolean.TRUE;Boolean bcFalse = Boolean.FALSE;System.out.println("bcTrue = " + bcTrue);System.out.println("bcFalse = " + bcFalse);}
}

上面的代码生成以下结果。


http://www.ppmy.cn/ops/126136.html

相关文章

windows C++-避免死锁(下)

使用 join 防止死锁 下面介绍了如何使用消息缓冲区和消息传递函数来消除死锁的可能性。 为了将该示例与上一示例相关联,philosopher 类通过使用 concurrency::unbounded_buffer 对象和 join 对象来替换每个 critical_section 对象。 join 对象充当为哲学家提供筷子…

mac下docker的详细安装和配置

linux的docker安装请参考:linux下docker详细安装,在Mac上安装Docker也相对简单,以下是详细步骤: 1. 系统要求 确保你的Mac满足以下要求: macOS 10.14(Mojave)或更高版本至少4GB RAM 2. 下载…

img标签的title和alt的区别,png、jpg、gif、格式区别

img标签的title和alt有什么区别? 区别一: title:鼠标移入到图片显示的值 alt:图片无法加载时显示的值 区别二: 在seo的层面上,蜘蛛抓取不到图片的内容,所以前端在写img标签的时候为了增加seo效果…

Java 多线程(三)—— 死锁

死锁的产生 我们先从简单的死锁最后到难一些的死锁问题开始展开讨论。 首先一个线程,一把锁,因为多次加锁而导致死锁问题,由于Java 的synchronized 实现了可重入锁,因此这个死锁问题就不存在了,意味着当一个线程拥有…

测试用例的编写

1.基本概念: 编写测试用例是确保代码质量和正确性的重要环节,尤其是在软件开发和维护过程中。测试用例通常用于验证功能是否符合预期,并及时发现潜在的错误或漏洞。 2.常见的测试用例编写方法: 等价划分法,边界值法&a…

线性回归损失函数的推导

要推导损失函数公式 ℓ ( θ ) 1 2 n ( y ^ − y ) ⊤ ( y ^ − y ) \ell(\boldsymbol{\theta}) \frac{1}{2n}(\hat{\boldsymbol{y}} - \boldsymbol{y})^\top(\hat{\boldsymbol{y}} - \boldsymbol{y}) ℓ(θ)2n1​(y^​−y)⊤(y^​−y),我们可以从几个基础概念开…

安装R和RStudio:开始你的数据分析之旅

数据分析是当今世界中一个非常热门的领域,而R语言是进行数据分析的强大工具之一。R是一种编程语言和软件环境,用于统计计算和图形表示。RStudio是一个集成开发环境(IDE),它为R语言提供了一个更加友好和高效的工作环境。…

Python | Leetcode Python题解之第474题一和零

题目: 题解: class Solution:def findMaxForm(self, strs: List[str], m: int, n: int) -> int:count10 []for s in strs:count10.append([0,0])for c in s:if c 0: count10[-1][0]1else: count10[-1][1]1dp [[0]*(n1) for _ in range(m1)]for i …