常用API - 包装类、System类
包装类
概述
Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率。
然而很多情况,会创建对象使用,因为对象可以做更多的功能。
如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类。如下:
基本类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
装箱与拆箱
基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:
装箱:基本类型 --> 对应的包装类对象。
拆箱:包装类对象 --> 对应的基本类型。
用Integer与 int为例:(看懂代码即可)
基本数值---->包装对象
Integer i = new Integer(4);//使用构造函数函数
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法
包装对象---->基本数值
int num = i.intValue();
自动装箱与自动拆箱
由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,
基本类型与包装类的装箱、拆箱动作可以自动完成。例如:
package com;
/**
* 自动装箱和拆箱:基本类型的数据和包装类之间可以自动的互相转换
*
*/
public class IntegerTest {
public static void main(String[] args) {
// 自动装箱,直接把int类型的整数赋值给包装类
Integer i = 1; //相当于 Integer i = new Integer(1);
// 自动拆箱:i是包装类,无法直接参与运算,可以自动转为基本类型再进行计算
// i = i + 2 相当于 i = i.intValue() + 2
// 计算出结果后又自动装箱
i = i +2;
System.out.println(i);
}
}
基本类型与字符串之间的转换
基本类型转换为String
基本类型转换String总共有三种方式,查看课后资料可以得知,这里只讲最简单的一种方式:
直接拼接空串,遇到串之后的数据都当成字符串拼接,之前的数据正常运算。比如
"" + 1 + 2 + 3 // 得到123
1 + 2 + "" + 3 // 得 33
1 + 2 + 3 + "" // 得 6
调用String的valueOf方法
int num = 123;
String str = String.valueOf(num);
System.out.println(str);
转换成封装类调用toString方法
Integer num = 6;
String str = num.toString();
System.out.println(str);
基本类型直接与””相连接即可;如:34 + ""
String转换成对应的基本类型
除了Character类之外,其他所有包装类都具有parseXxx静态方法
可以将字符串参数转换为对应的基本类型:
public static byte parseByte(String s)
:将字符串参数转换为对应的byte基本类型。public static short parseShort(String s)
:将字符串参数转换为对应的short基本类型。public static int parseInt(String s)
:将字符串参数转换为对应的int基本类型。public static long parseLong(String s)
:将字符串参数转换为对应的long基本类型。public static float parseFloat(String s)
:将字符串参数转换为对应的float基本类型。public static double parseDouble(String s)
:将字符串参数转换为对应的double基本类型。public static boolean parseBoolean(String s)
:将字符串参数转换为对应的boolean基本类型。
代码使用(仅以Integer类的静态方法parseXxx为例)如:
public class IntegerParse {
public static void main(String[] args) {
int num = Integer.parseInt("100");
}
}
注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出
java.lang.NumberFormatException
异常。
System类
java.lang.System
类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。它不能被实例化。
在 System
类中,有标准输入、标准输出和错误输出流;
对外部定义的属性和环境变量的访问;加载文件和库的方法;
还有快速复制数组的一部分的实用方法。
字段摘要
字段摘要 | 描述 |
---|---|
static PrintStream err | “标准”错误输出流。 |
static InputStream in | “标准”输入流。 |
static PrintStream out | “标准”输出流。 |
方法摘要
方法 | 描述 |
---|---|
static long currentTimeMillis() | 返回以毫秒为单位的当前时间。 |
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) |
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
static String clearProperty(String key) | 移除指定键指示的系统属性。 |
static Console console() | 返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。 |
static void exit(int status) | 终止当前正在运行的 Java 虚拟机。 |
static void gc() | 运行垃圾回收器。 |
static Map<String,String> getenv() | 返回一个不能修改的当前系统环境的字符串映射视图。 |
static String getenv(String name) | 获取指定的环境变量值。 |
static Properties getProperties() | 确定当前的系统属性。 |
static String getProperty(String key) | 获取指定键指示的系统属性。 |
static String getProperty(String key, String def) | 获取用指定键描述的系统属性。 |
static SecurityManager getSecurityManager() | 获取系统安全接口。 |
static int identityHashCode(Object x) | 返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。 |
static Channel inheritedChannel() | 返回从创建此 Java 虚拟机的实体中继承的信道。 |
static void load(String filename) | 从作为动态库的本地文件系统中以指定的文件名加载代码文件。 |
static void loadLibrary(String libname) | 加载由 libname 参数指定的系统库。 |
static String mapLibraryName(String libname) | 将一个库名称映射到特定于平台的、表示本机库的字符串中。 |
static long nanoTime() | 返回最准确的可用系统计时器的当前值,以毫微秒为单位。 |
static void runFinalization() | 运行处于挂起终止状态的所有对象的终止方法。 |
static void setErr(PrintStream err) | 重新分配“标准”错误输出流。 |
static void setIn(InputStream in) | 重新分配“标准”输入流。 |
static void setOut(PrintStream out) | 重新分配“标准”输出流。 |
static void setProperties(Properties props) | 将系统属性设置为 Properties 参数。 |
static String setProperty(String key, String value) | 设置指定键指示的系统属性。 |
static void setSecurityManager(SecurityManager s) | 设置系统安全性。 |
在System类的API文档中,常用的方法有:
public static long currentTimeMillis()
:返回以毫秒为单位的当前时间。public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将数组中指定的数据拷贝到另一个数组中。
currentTimeMillis方法
实际上,currentTimeMillis方法就是 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值
package com;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SystemTest {
public static void main(String[] args) {
//获取当前时间毫秒值
long ms = System.currentTimeMillis();
System.out.println("当前时间戳:" + ms);
Date date = new Date(ms);
System.out.println("默认日期格式:" + date);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("指定日期格式:" + simpleDateFormat.format(date));
}
}
练习
验证for循环打印数字1-9999所需要使用的时间(毫秒)
public class SystemTest1 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:" + (end - start));
}
}
arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将数组中指定的数据拷贝到另一个数组中。
数组的拷贝动作是系统级的,性能很高。System.arraycopy方法具有5个参数,含义分别为:
参数名称 | 参数类型 | 参数含义 |
---|---|---|
src | Object | 源数组 |
srcPos | int | 源数组索引起始位置 |
dest | Object | 目标数组 |
destPos | int | 目标数组索引起始位置 |
length | int | 复制元素个数 |
练习
将src数组中前3个元素,复制到dest数组的前3个位置上
复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]
复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]
import java.util.Arrays;
/**
* 将src数组中前3个元素,复制到dest数组的前3个位置上
* 复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]
* 复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]
*/
public class SystemPractise {
public static void main(String[] args) {
int[] src = {1, 2, 3, 4, 5};
int[] dest = {5, 6, 7, 8, 9};
System.out.println("复制之前:");
System.out.println(Arrays.toString(src));
System.out.println(Arrays.toString(dest));
System.arraycopy(src,0,dest,0,3);
System.out.println("复制之后:");
System.out.println(Arrays.toString(src));
System.out.println(Arrays.toString(dest));
}
}
常用API - 包装类、System类的更多相关文章
- Java的常用API之System类简介
Syetem类 java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long c ...
- java常用API之System类
System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作.System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象.System类中的都是static方法,类 ...
- 01 语言基础+高级:1-5 常用API第二部分_day01.【Object类、常用API: Date类、System类、StringBuilder类】
day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 java.lang.O ...
- 日期类&&包装类&&System类&&Math类&&Arrays数组类&&大数据类
day 07 日期类 Date 构造函数 Date():返还当前日期. Date(long date):返还指定日期 date:时间戳--->距离1970年1月1日 零时的毫秒数 常用方法 日期 ...
- Java—包装类/System类/Math类/Arrays类/大数据运算/Collection接口/Iterator迭代器
基本类型包装类 8种基本类型对应的包装类如: 将字符串转成基本类型: 将基本数值转成字符串有3种方式: 基本类型直接与””相连接即可:34+" " 调用String的valueOf ...
- [Day17]常用API(System、Math、Arrays、BigInteger、BigDecimal)
1.基本类型包装类 1.1 8种基本类型对应的包装类 字节型 byte Byte 短整型 short Short 整型 int Integer 长整型 long Long 字符型 char Chara ...
- 常用API - 时间日期类
Date类 概述 java.util.Date类 表示特定的瞬间,精确到毫秒. 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期 ...
- Java常用API及Math类
一.API的概述 API——Application Programing Interface:应用程序编程接口,是java提供的一些预定义的函数: 目的:基于API实现程序的快速编写,只需了解其作用, ...
- Java常用API、Math类介绍
一.API的概述 API——Application Programing Interface:应用程序编程接口,是java提供的一些预定义的函数: 目的:基于API实现程序的快速编写,只需了解其作用, ...
随机推荐
- 哦,Vendor
vendor踩坑笔记: 接过公司里面X平台golang部分的后端后,需要新添加一个业务功能,美滋滋~ 拿过项目一顿写之后后遇到事了. 报错的描述如下: 报错的大意说:方法的入参类型不匹配,我们不能把 ...
- tensorflow2.0学习笔记第二章第一节
2.1预备知识 # 条件判断tf.where(条件语句,真返回A,假返回B) import tensorflow as tf a = tf.constant([1,2,3,1,1]) b = tf.c ...
- 对学长TD课程通(.apk)的评价
界面简介: 界面分为三个部分,第一部分是对课程表的添加,第二部分是对空闲教室的查询,第三部分是实时时间的展示和对软件的评价,实用性很强,仅限于本校学生,界面观赏性较差,从界面上对人的吸引力不够, 实用 ...
- 存储系列之 DAS、SAN、NAS三种常见架构概述
随着主机.磁盘.网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要.因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间,今天在这里 ...
- Java——String类(常用类)
一.String类——描述字符串 常用的方法简单介绍: 1.charAt() 获取对应位置的字符 2.length() 获取字符串的长度 3.concat() 在字符串的尾部追加内容-----相当于连 ...
- TensorFlow从0到1之常量、变量和占位符详解(6)
最基本的 TensorFlow 提供了一个库来定义和执行对张量的各种数学运算.张量,可理解为一个 n 维矩阵,所有类型的数据,包括标量.矢量和矩阵等都是特殊类型的张量. TensorFlow 支持 ...
- 拒绝降权!教你用 Python 确保制作的短视频独一无二
1. 场景 前段时间有人私信我,说自己辛辛苦苦剪辑的短视频,上传到某平台后,由于播放量太大,收到 降权 的通知,直接导致这个账号废掉了! 其实,各大视频平台都有自己的一套鉴别算法,针对视频的二次创作, ...
- 使用torch实现RNN
(本文对https://blog.csdn.net/out_of_memory_error/article/details/81456501的结果进行了复现.) 在实验室的项目遇到了困难,弄不明白LS ...
- 在IntelliJ IDEA中注释使用的说明
/** * @author 标明该类模块的开发作者 * @version 标明该类模块的版本 * @see 参开转向,也就是相关的主题 * @param 对方法中的某些参数进行说明 * @return ...
- 手写简易版Promise
实现一个简易版 Promise 在完成符合 Promise/A+ 规范的代码之前,我们可以先来实现一个简易版 Promise,因为在面试中,如果你能实现出一个简易版的 Promise 基本可以过关了. ...