Java基础:基本数据类型包装类
1. 基本类型包装类概述
为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。
- 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
- 常用的操作之一:用于基本数据类型与字符串之间的转换。
- 基本类型和包装类的对应:Byte,Short,Integer,Long,Float,Double,Character,Boolean
基本数据类型 | 包装数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2. 基本数据类型包装类应用
该包装对象主要用于基本类型和字符串之间的转换
2.1 基本类型 → 字符串
- 基本类型数值+”“
- 用String类中的静态方法valueOf(基本类型数值);
2.2 字符串 → 基本类型
使用包装类中的静态方法xxx parseXxx(“xxx”);
- int parseInt(String str);
- long parseLong(String str);
- boolean parseBoolean(String str);
- 只有Character没有parse方法。
如果字符串被Integer进行对象的封装,可使用另一个非静态的方法,intValue。
将一个Integer对象转成基本数据类型值。
用Integer的静态方法valueOf(String s);
3. Integer类
3.1 Integer类概述
Integer 类在对象中包装了一个基本类型 int 的值
该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法
3.2 构造方法
public Integer(int value)
public Integer(String s)
PS:这个字符串必须是由数字字符组成
3.3 int类型和String类型的相互转换
返回值 | 方法 | 说明 |
---|---|---|
int | intValue() | 以 int 类型返回该 Integer 的值 |
int | parseInt(String s) | 将字符串参数作为有符号的十进制整数进行解析 |
String | toString(int i) | 返回一个表示指定整数的 String 对象 |
Integer | valueOf(int i) | 返回一个表示指定的 int 值的 Integer 实例 |
Integer | valueOf(String s) | 返回保存指定的 String 的值的 Integer 对象 |
代码示例:
package cn.itcast_03; /** int类型和String类型的相互转换* * int -- String* String.valueOf(number)* * String -- int* Integer.parseInt(s)*/
public class IntegerDemo { public static void main(String[] args) { // int -- String int number = 100; // 方式1 String s1 = "" + number; System.out.println("s1:" + s1); // 方式2 String s2 = String.valueOf(number); System.out.println("s2:" + s2); // 方式3 // int -- Integer -- String Integer i = new Integer(number); String s3 = i.toString(); System.out.println("s3:" + s3); // 方式4 // public static String toString(int i) String s4 = Integer.toString(number); System.out.println("s4:" + s4); System.out.println("-----------------"); // String -- int String s = "100"; // 方式1 // String -- Integer -- int Integer ii = new Integer(s); // public int intValue() int x = ii.intValue(); System.out.println("x:" + x); //方式2 //public static int parseInt(String s) int y = Integer.parseInt(s); System.out.println("y:"+y); }
}
运行结果:
3.4 常用的基本进制转换
返回值 | 方法 | 说明 |
---|---|---|
String | toBinaryString(int i) | 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式 |
String | toOctalString(int i) | 以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式 |
String | toHexString(int i) | 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式 |
3.5 十进制转换成其他进制
返回值 | 方法声明 | 功能描述 |
---|---|---|
String | toBinaryString(int i) | 十进制转换成二进制 |
String | toOctalString(int i) | 十进制转换成八进制 |
String | toHexString(int i) | 十进制转换成十六进制 |
String | toString(int i,int radix) | 十进制转换成任何进制 |
3.6 其他进制到十进制
public static int parseInt(String s,int radix)
代码示例:
package cn.itcast_04; /** 常用的基本进制转换* public static String toBinaryString(int i)* public static String toOctalString(int i)* public static String toHexString(int i)* * 十进制到其他进制* public static String toString(int i,int radix)* 由这个我们也看到了进制的范围:2-36* 为什么呢?0,...9,a...z* * 其他进制到十进制* public static int parseInt(String s,int radix)*/
public class IntegerDemo { public static void main(String[] args) { // 十进制到二进制,八进制,十六进制 System.out.println(Integer.toBinaryString(100)); System.out.println(Integer.toOctalString(100)); System.out.println(Integer.toHexString(100)); System.out.println("-------------------------"); // 十进制到其他进制 System.out.println(Integer.toString(100, 10)); System.out.println(Integer.toString(100, 2)); System.out.println(Integer.toString(100, 8)); System.out.println(Integer.toString(100, 16)); System.out.println(Integer.toString(100, 5)); System.out.println(Integer.toString(100, 7)); System.out.println(Integer.toString(100, -7)); System.out.println(Integer.toString(100, 70)); System.out.println(Integer.toString(100, 1)); System.out.println(Integer.toString(100, 17)); System.out.println(Integer.toString(100, 32)); System.out.println(Integer.toString(100, 37)); System.out.println(Integer.toString(100, 36)); System.out.println("-------------------------"); //其他进制到十进制 System.out.println(Integer.parseInt("100", 10)); System.out.println(Integer.parseInt("100", 2)); System.out.println(Integer.parseInt("100", 8)); System.out.println(Integer.parseInt("100", 16)); System.out.println(Integer.parseInt("100", 23)); //NumberFormatException //System.out.println(Integer.parseInt("123", 2)); }
}
运行结果:
3.7 自动拆装箱
package cn.itcast_05; /** JDK5的新特性* 自动装箱:把基本类型转换为包装类类型* 自动拆箱:把包装类类型转换为基本类型* * 注意一个小问题:* 在使用时,Integer x = null;代码就会出现NullPointerException。* 建议先判断是否为null,然后再使用。*/
public class IntegerDemo { public static void main(String[] args) { // 定义了一个int类型的包装类类型变量i // Integer i = new Integer(100); Integer ii = 100; ii += 200; System.out.println("ii:" + ii); // 通过反编译后的代码 // Integer ii = Integer.valueOf(100); //自动装箱 // ii = Integer.valueOf(ii.intValue() + 200); //自动拆箱,再自动装箱 // System.out.println((new StringBuilder("ii:")).append(ii).toString()); Integer iii = null; // NullPointerException if (iii != null) { iii += 1000; System.out.println(iii); } }
}
4. BigInteger
BigInteger:可以让超过Integer范围内的数据进行运算。超大整数相加的问题
方法声明 | 功能描述 |
---|---|
add(BigInteger val) | 加 |
subtract(BigInteger val) | 减 |
multiply(BigInteger val) | 乘 |
divide(BigInteger val) | 除 |
divideAndRemainder(BigInteger val) | 返回商和余数的数组 |
BigInteger(String val) | 构造方法 |
5. BigDecimal
不可变的、任意精度的有符号十进制数。由于在运算的时候,float类型和double很容易丢失精度,演示案例。所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
方法声明 | 功能描述 |
---|---|
BigDecimal(String val) | 构造方法 |
add(BigDecimal augend) | 加 |
subtract(BigDecimal subtrahend) | 减 |
multiply(BigDecimal multiplicand) | 乘 |
divide(BigDecimal divisor) | 除 |
divide(BigDecimal divisor,int scale,int roundingMode) | 商、几位小数、如何取舍 |
6. Character类
6.1 Character类概述
Character 类在对象中包装一个基本类型 char 的值,此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然
6.2 构造方法
public Character(char value)
6.3 常用方法
方法 | 说明 |
---|---|
isUpperCase(char ch) | 判断是否是大写 |
isLowerCase(char ch) | 判断是否是小写 |
isDigit(char ch) | 判断是否是数字 |
char toUpperCase(char ch) | 转换成大写 |
char toLowerCase(char ch) | 转换成小写 |
代码示例:
package cn.itcast_02; /** public static boolean isUpperCase(char ch):判断给定的字符是否是大写字符* public static boolean isLowerCase(char ch):判断给定的字符是否是小写字符* public static boolean isDigit(char ch):判断给定的字符是否是数字字符* public static char toUpperCase(char ch):把给定的字符转换为大写字符* public static char toLowerCase(char ch):把给定的字符转换为小写字符*/
public class CharacterDemo { public static void main(String[] args) { // public static boolean isUpperCase(char ch):判断给定的字符是否是大写字符 System.out.println("isUpperCase:" + Character.isUpperCase('A')); System.out.println("isUpperCase:" + Character.isUpperCase('a')); System.out.println("isUpperCase:" + Character.isUpperCase('0')); System.out.println("-----------------------------------------"); // public static boolean isLowerCase(char ch):判断给定的字符是否是小写字符 System.out.println("isLowerCase:" + Character.isLowerCase('A')); System.out.println("isLowerCase:" + Character.isLowerCase('a')); System.out.println("isLowerCase:" + Character.isLowerCase('0')); System.out.println("-----------------------------------------"); // public static boolean isDigit(char ch):判断给定的字符是否是数字字符 System.out.println("isDigit:" + Character.isDigit('A')); System.out.println("isDigit:" + Character.isDigit('a')); System.out.println("isDigit:" + Character.isDigit('0')); System.out.println("-----------------------------------------"); // public static char toUpperCase(char ch):把给定的字符转换为大写字符 System.out.println("toUpperCase:" + Character.toUpperCase('A')); System.out.println("toUpperCase:" + Character.toUpperCase('a')); System.out.println("-----------------------------------------"); // public static char toLowerCase(char ch):把给定的字符转换为小写字符 System.out.println("toLowerCase:" + Character.toLowerCase('A')); System.out.println("toLowerCase:" + Character.toLowerCase('a')); }
}
6.4 练习
代码示例:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
package cn.itcast_03; import java.util.Scanner; /** 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)* * 分析:* A:定义三个统计变量。* int bigCont=0;* int smalCount=0;* int numberCount=0;* B:键盘录入一个字符串。* C:把字符串转换为字符数组。* D:遍历字符数组获取到每一个字符* E:判断该字符是* 大写 bigCount++;* 小写 smalCount++;* 数字 numberCount++;* F:输出结果即可*/
public class CharacterTest { public static void main(String[] args) { // 定义三个统计变量。 int bigCount = 0; int smallCount = 0; int numberCount = 0; // 键盘录入一个字符串。 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:"); String line = sc.nextLine(); // 把字符串转换为字符数组。 char[] chs = line.toCharArray(); // 历字符数组获取到每一个字符 for (int x = 0; x < chs.length; x++) { char ch = chs[x]; // 判断该字符 if (Character.isUpperCase(ch)) { bigCount++; } else if (Character.isLowerCase(ch)) { smallCount++; } else if (Character.isDigit(ch)) { numberCount++; } } // 输出结果即可 System.out.println("大写字母:" + bigCount + "个"); System.out.println("小写字母:" + smallCount + "个"); System.out.println("数字字符:" + numberCount + "个"); }
}
运行结果:
Java基础:基本数据类型包装类相关推荐
- JAVA基础 :数据类型
JAVA基础 :数据类型 Java的基本数据类型有8种,分别是**:byte(位).short(短整数).int(整数).long(长整数).float(单精度).double(双精度).char(字 ...
- Java基础-基本数据类型
Java中常见的转义字符: 某些字符前面加上\代表了一些特殊含义: \r :return 表示把光标定位到本行行首. \n :next 表示把光标定位到下一行同样的位置. 单独使用在某些平台上会产生 ...
- java基础-02数据类型
基本类型 整数 byte byte 数据类型是8位.有符号的,以二进制补码表示的整数 最小值是 -128(-2^7) 最大值是 127(2^7-1) 默认值是 0 byte 类型用在大型数组中节约空间 ...
- Java基础语法-数据类型与idea配置
文章目录 day02 - Java基础语法 1. 注释 使用的技巧 注意点 2. 关键字 2.1 概念 2.2 第一个关键字class 3. 字面量 区分技巧 4. 变量 4.1 什么是变量? 4.2 ...
- java基础之数据类型
博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏. ...
- 小汤学编程之JAVA基础day02——数据类型、Scanner类的使用
一.JAVA的数据类型 1.变量 2.常量 3.基本数据类型 4.引用数据类型 5.数据类型转换 二.Scanner类的使用 1.作用 2.引入 3 ...
- Java基础——基本类型和包装类、基本类型和字符串之间的转换
基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...
- Java基础类型的包装类传值NullPoint问题
错误集,记录下自己犯过的错误 今天在做Java开发时,想一个参数类型为int的方法传递一个类型为Integer的变量, 一开始都是以有值的变量进行测试,忘了Integer的变量时引用类型,有可能为nu ...
- 【java基础】数据类型是啥?有啥用?
一说到数据类型,我们就会想到int,char,double等,那今天我们就详细总结一下它们的适用范围和使用.本文的思维架构: 变量 (1)what?-概念和分类 概念:变量相当于一个有名字的容器,里面 ...
- Java基础:数据类型与变量
数据类型 Java是一种强数据类型语言,每一个变量在声明时都必须规定其数据类型,在运行中也不允许其改变数据类型.数据类型的作用其实就是规范变量存储数据的大小,从而合理利用计算机内存空间. 在程序运行过 ...
最新文章
- Linux 上的最佳 C/C++ IDE
- BNUOJ 4067 美丽的花环 (几何题)
- SQL Server Management Studio 过期无法使用解决办法
- 【Qt】Qt中QJsonArray类
- python 中文编码差异_Python 编码为什么那么蛋疼?
- 苹果几最好用_深度解析安卓手机和苹果手机到底有哪些区别,哪种手机最好用...
- 解决gmpy2安装报错:# include “mpfr.h“ compilation terminated.error: command ‘gcc‘ failed with exit status 1
- 万年历matlab算法,万年历算法(万年历算法和分析)
- opengl 库函数 glew glfw glad glut gl glu freeglut
- github网络安全项目工具集合
- 苹果笔记本摄像头黑屏怎么回事
- [fairseq] 报错:TypeError: _broadcast_coalesced(): incompatible function arguments
- c/c++原子锁应用(跨平台)
- libguestfs java_rhel7.0(libguestfs) 挂载windows虚机镜像
- Unity AzureKinect Ar贴纸
- Win11系统启动文件夹是空的怎么解决?
- 用VML标记语言画图、动画制作
- Run Android apps in Windows, OS X, Linux with Chrome (and a modified runtime)
- 生成学习算法.高斯判别分析(GDA).GDA与Logistic模型
- 王者荣耀个人发卡源码+教程
热门文章
- 离开网易的转型之路3:热爱测试之路-路上的风景
- 解读金山网盾3.5 0day漏洞免疫技术
- 用户系列之四:用户登录过程之配置文件的使用详解
- treeview托拽和动态添加节点以及treeview和xml的交互的实现
- Apache Hadoop版本详解
- QOS仍然很有价值-Vecloud
- Haproxy+Heartbeat 高可用集群方案操作记录
- linux查看当前shell的方法
- (补充)爬取大西洋月刊并调用彩云小译翻译 API 脚本
- [LeetCode] 102. Binary Tree Level Order Traversal_Medium tag: BFS