1 基本类型的包装类
在java中每个基础类型,都可以包装为引用数据类型的对象。
基础数据类型 | 包装类 |
---|---|
int | Integer |
char | Character |
flot | Float |
double | Double |
byte | Byte |
long | Long |
short | Short |
boolean | Boolean |
基本数据类型和包装类之间转换要涉及两个概念——装箱和拆箱。装箱指基本数据类型转换为引用数据类型,拆箱与之相反。
装箱:
public class Demo01 {
public static void main(String[] args) {
int x = 1;
Integer X = new Integer(1);
System.out.println(X.equals(x));
}
}
/*运行结果:
true
进程已结束,退出代码为 0
*/
拆箱
public class Demo02 {
public static void main(String[] args) {
int x = 1;
Integer y = new Integer(2);
int z = y.intValue();
System.out.println(z + x);
}
}
/*运行结果:
3
进程已结束,退出代码为 0
*/
但是,jdk5.0开始,类可以自动装箱拆箱
public class Demo03 {
public static void main(String[] args) {
Integer x = 10;
int y = x;
System.out.println("x:" + x + "\n" + "y:" + y);
}
}
/*运行结果:
x:10
y:10
进程已结束,退出代码为 0
*/
2 Scanner类
Scanner主要用于获取用户键盘输入内容。
太常用了,直接上代码了。
public class Demo04 {
public static void main(String[] args) {
//System.in代表标准输入,即键盘输入
Scanner sc = new Scanner(System.in);
System.out.println("请从键盘输入内容:");
while (sc.hasNext()) {
String s =sc.next();
if(s.equals("exit"))
break;
else
System.out.println("您输入的内容是:" + s);
sc.close(); //释放资源
}
}
}
/*运行结果:
请从键盘输入内容:
asd
您输入的内容是:asd
123
您输入的内容是:123
000
您输入的内容是:000
exit
进程已结束,退出代码为 0
*/
3 String、StringBuffer、StringBuilder
3.1 String类
String类表示不可改变的字符串,一旦被创建,字符序列不可改变。
对于String类的比较不能用“==”判断是否相同应用函数equal(String)
进行判断。
1.toCharArry()方法,转换成一个字符数组。
public class Demo05 {
public static void main(String[] args) {
String s = "hello,world";
char[] c = s.toCharArray();
for (int i = 0 ; i<c.length ; i++)
System.out.println(c[i]);
}
}
/*运行结果:
h
e
l
l
o
,
w
o
r
l
d
进程已结束,退出代码为 0
*/
2.charAt()读取位置
public class Demo05 {
public static void main(String[] args) {
String s = "hello,world";
for (int i = 0 ; i< s.length() ; i++)
System.out.println(s.charAt(i));
}
}
/*运行结果:
h
e
l
l
o
,
w
o
r
l
d
进程已结束,退出代码为 0
*/
String中有较多的方法可以调用,不一一讲解。
3.2 StringBuffer类
StringBuffer也代表字符串,用于描述可变序列,对其进行操作时不会生成新的对象。
public class Demo06 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("hello,world"); //在sb后加入字符串
System.out.println(sb);
sb.reverse(); //对sb内容进行反转
System.out.println(sb);
sb.reverse(); //重新反转其中内容
sb.delete(5,11); //删除其中排在第6-12的字符
System.out.println(sb);
sb.insert(2,"aaaaa");//在其第3个字符后插入字符
System.out.println(sb);
}
}
/*运行结果:
hello,world
dlrow,olleh
hello
heaaaaallo
进程已结束,退出代码为 0
*/
3.3 StringBuilder
SringBuilder和StringBuffer一样都代表字符可变的字符序列。不同的是,StringBuider是线程不安全的StringBuffer是线程安全的。
4 System类与Runtime类
System类与Runtime类主要用于获得平台属性。
4.1 System类
currentTimeMillis()可以测得程序的运行时间
public class Demo01 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
long end =System.currentTimeMillis();
System.out.println("程序睡眠了:" + (end-start) + "毫秒");
}
}
/*运行结果:
程序睡眠了:101毫秒 //基于系统性能,多出几毫秒很正常
进程已结束,退出代码为 0
*/
getProperties(String)可以获取系统信息。
public class Demo02 {
public static void main(String[] args) {
System.out.println("当前系统版本为:" + System.getProperty("os.name") + System.getProperty("os.version") + System.getProperty("os.arch"));
System.out.println("当先系统用户名为:" + System.getProperty("user.name"));
}
}
/*运行结果:
当前系统版本为:Windows 1010.0amd64
当先系统用户名为:***** //手动打码
进程已结束,退出代码为 0
*/
4.2 Runtim类
Runtime类代表Java程序的运行环境。
public class Demo03 {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
System.out.println("处理器数量:" + r.availableProcessors());
System.out.println("空闲内存数:" + r.freeMemory());
System.out.println("总内存数:" + r.totalMemory());
System.out.println("可用最大内存数:" + r.maxMemory());
try {
r.exec("notepad.exe"); //打开记事本操作;
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*运行结果:
处理器数量:8
空闲内存数:250000608
总内存数:255328256
可用最大内存数:3779067904
进程已结束,退出代码为 0
*/
5 Math类与Random类
5.1 Math类
Java.lang.Math类中有很多数学运算的静态方法,其中还包括静态常量E(自然对数)和圆周率PI。另外Math类是私有的,不能被实例化,Math类是final修饰的,不能创建其子类。
public class Demo01 {
public static void main(String[] args) {
System.out.println(Math.sqrt(16)); //开平方根
System.out.println(Math.cbrt(27)); //开立方根
System.out.println(Math.pow(3 , 2)); //a的b次方
System.out.println(Math.max(10 , 5.5)); //比较大小
System.out.println(Math.min(1 ,2));
System.out.println(Math.abs(-10)); //绝对值
System.out.println(Math.random()); //随机数(0-1之间的随机数)
}
}
/*运算结果:
4.0
3.0
9.0
10.0
1
10
0.3898165312889822
进程已结束,退出代码为 0
5.2 Random类
java.util.Random类专门用来生成一个伪随机数,它有两种构造方法:一个是无参数的,使用当前时间作为种子,一个是有参数的,需要一个long型整数额参数作为种子。
public class Demo02 {
public static void main(String[] args) {
Random r = new Random();
System.out.println("int型随机数:");
for (int i = 0 ; i < 3 ; i++){
System.out.println(r.nextInt());
}
System.out.println("double型随机数:");
for (int i = 0 ; i < 3 ; i++){
System.out.println(r.nextDouble());
}
Random r1 = new Random(999);
System.out.println("带999参数的int型随机数:");
for (int i = 0 ; i < 3 ; i++){
System.out.println(r1.nextInt());
}
System.out.println("带999参数的double型随机数:");
for (int i = 0 ; i < 3 ; i++){
System.out.println(r1.nextDouble());
}
}
}
/*运行结果:
int型随机数:
-1830485051
-1387810
1078935549
double型随机数:
0.9815031072193202
0.7865351099711418
0.8350239280794249
带999参数的int型随机数:
-1242822577
-421961713
-1172034834
带999参数的double型随机数:
0.45481516562301083
0.3800035585165882
0.11936990373368206
进程已结束,退出代码为 0
*/
6 日期相关类
6.1 Date类
public class Demo03 {
public static void main(String[] args) {
Date d1 = new Date(); //新建一个现在时间
System.out.println(d1);
Date d2 = new Date(999999999999L); //新建一1970年1月1日 0点0分0秒 开始过了多少毫秒后的时间
System.out.println(d2);
}
}
/*运行结果:
Tue Jun 22 10:13:50 CST 2021
Sun Sep 09 09:46:39 CST 2001
进程已结束,退出代码为 0
*/
6.2 Calendar类
此类可以精确到毫秒。
import java.util.Calendar;
public class Demo01 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println("年:" + c.get(Calendar.YEAR));
System.out.println("月:" + c.get(Calendar.MONTH));
System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + c.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + c.get(Calendar.MINUTE));
System.out.println("秒:" + c.get(Calendar.SECOND));
System.out.println("毫秒:" + c.get(Calendar.MILLISECOND));
}
}
/*运行结果:
年:2021
月:5
日:22
时:10
分:26
秒:47
毫秒:557
进程已结束,退出代码为 0
*/
6.3 DateFormat类
用来优化显示的类。
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Demo02 {
public static void main(String[] args) {
// 获取不同格式化风格和中国环境的日期
DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
DateFormat df3 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
// 获取不同格式化风格和中国环境的时间
DateFormat df5 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA);
DateFormat df6 = DateFormat.getTimeInstance(DateFormat.FULL, Locale.CHINA);
DateFormat df7 = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CHINA);
DateFormat df8 = DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA);
// 将不同格式化风格的日期格式化为日期字符串
String date1 = df1.format(new Date());
String date2 = df2.format(new Date());
String date3 = df3.format(new Date());
String date4 = df4.format(new Date());
// 将不同格式化风格的时间格式化为时间字符串
String time1 = df5.format(new Date());
String time2 = df6.format(new Date());
String time3 = df7.format(new Date());
String time4 = df8.format(new Date());
// 输出日期
System.out.println("SHORT:" + date1 + " " + time1);
System.out.println("FULL:" + date2 + " " + time2);
System.out.println("MEDIUM:" + date3 + " " + time3);
System.out.println("LONG:" + date4 + " " + time4);
}
}
/*运行结果:
SHORT:21-6-22 上午10:39
FULL:2021年6月22日 星期二 上午10时39分14秒 CST
MEDIUM:2021-6-22 10:39:14
LONG:2021年6月22日 上午10时39分14秒
进程已结束,退出代码为 0
*/