包装类
就是把基本数据类型包装成对象,可以使用对象的属性和方法
基本数据类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
装箱和拆箱
装箱的概念:就是把基本数据类型转换成包装类型。
Integer i=10;
-
手动装箱
方式一:通过包装类的构造方法
包装类型 对象名=new 包装类型(基本类型的值)
方式二:通过包装类的方法实现
包装类型 对象名=包装类型.valueOf(基本类型的值)
-
自动装箱
Integer i=10;
包装类型 对象名=基本类型的值;
注:自动装箱的底层实现:通过手动装箱的方式二 。
拆箱:就是把包装类型转换成基本数据类型 -
手动拆箱
使用包装类的方法实现
基本类型 变量名= 包装类型 .基本类型value();
-
自动拆箱
基本类型 变量名= 包装类型的对象;
// lnteger 的valueOf()使用一个设计模式:享元设让模式
// 所以valueOf的参数值在-128~127范围内,
// 始终使用的共享的元素,地址都是一样的范围以外都是构造方法创建,
// new一次就是一个新地址,==结果始终false
注:由于自动装箱底层也是使用的valueOf(),所有自动装箱也满足该规则
**equals()**方法被包装类重写过,比较的是值
package com.m.demo;
public class test {
public static void main(String[] args) {
Integer i=10;
Integer j=10;
System.out.println(i==j);//true
Integer m=128;
Integer n=128;
System.out.println(m==n);//false
Integer k=new Integer(10);
Integer q=new Integer(10);
System.out.println(k==q);//false
//对象的比较:==比较的是地址值
// equals比较的是内容
// Integer在[-128,127]直间用==比较,true说明地址值一样
// 超过这个范围,创建新对象
// lnteger 的valueOf()使用一个设计模式:享元设让模式
// 所以valueOf的参数值在-128~127范围内,
// 始终使用的共享的元素,地址都是一样的范围以外都是构造方法创建,
// new一次就是一个新地址,==结果始终false
}
}
基本数据类型和String的转换
-
基本数据类型转换为String
方式一:
基本数据类型+“”
方式二:
使用包装类的方法:包装类型.toString(基本数据类型的值);
-
String 转换为基本数据类型
基本数据类型 变量名=包装类型.parse基本数据类型(String类型的值);
-
String转换为包装类型
方法一:包装类型 对象名=包装类型.valueOf(String类型的值);
方法二:包装类型 对象名=new 包装类型 (String类型的值);
package com.m.demo;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Counter {
public static void main(String[] args) {
try {
Scanner s=new Scanner(System.in);
System.out.println("请输入a 的值");
String a=s.next();
System.out.println("请输入b 的值");
String b=s.next();
int num1=Integer.parseInt(a);
int num2=Integer.parseInt(b);
System.out.println("a/b="+(num1/num2));
} catch (NumberFormatException e) {
System.out.println("格式转换错误");
e.printStackTrace();
}catch (InputMismatchException e) {
System.out.println("输入问题");
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
}
Math
进行数学计算的类。该类中方法全是静态方法,不需要创建Math的对象,直接调用方法
- Math.ceil();向上取整
- Math.floor();向下取整
- Math.max();两个数的最大值
- Math.pow();某个数的几次幂
- Math.random()
求随机小数:0~1之间的随机小数,包括0,不包括1。[0,1)
System.out.println((int)(Math.random()*10));
求[0,N)之间的随机整数的规则:;(int)(Math.random()*N))
System.out.println((int)(Math.random()*9+1));
求[M,N)之间的随机整数的规则:;(int)(Math.random()*(N-M)+M))
求[M,N]之间的随机整数的规则:;Math.ceil((Math.random()*(N-M)+M)))
- Math.round():四舍五入整数
Random类
该类用来生成随机数,该类中没有静态方法,所以需要先创建对象,才能使用。
- .nextBoolean();随机生成Boolean类型的值
- .nextInt();
- .nextInt(int n);随机生成0到n随机整数,包含0,不包含n
package com.m.demo;
import java.util.Arrays;
import java.util.Random;
public class test3 {
public static void main(String[] args) {
int [] nums=new int[7];
Random r=new Random();
for(int i=0;i<nums.length-1;i++) {
nums[i]=r.nextInt(33)+1;
}
nums[nums.length-1]=r.nextInt(16)+1;
System.out.println(Arrays.toString(nums));
for(int item:nums) {
if(item>0&&item<10) {
System.out.println("0"+item);
}else {
System.out.println(item);
}
}
}
}
日期处理
- Date:日期类操作
//Date()
Date d=new Date()
System.out.print(d);//获取当前时间
d.getTime();//1977年0时0秒到现在的毫秒值
- 格式化日期:SimpleDateFormat类(需要创建对象)
用来格式化日期,让日期的显示更加人性化
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH时mm分钟ss秒 E");
String s=sdf.format(d);
System.out.println(s);
Calendar日历类操作
- 创建Calendar日历对象;
Calendar c=Calendar.getInstance();
- 把日历对象转为Date;
Date d=cal.getTime();
- 在指定的日期上,增加日期时间;
c.add(Calendar.);
Calendar c=Calendar.getInstance();
//显示3天后的日期
c.add(Calendar.DAY_OF_MONTH, 3);
Date d=c.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH时mm分钟ss秒 E");
String s=sdf.format(d);
System.out.println(s);
- 表示获取指定的日期字段值:获取年/月/日
Calendar c=Calendar.getInstance();
int y=c.get(Calendar.YEAR);
System.out.println(y);//默认当前时间
int m=c.get(Calendar.MONTH)+1;
System.out.println(m);//月份+1
int weekday=c.get(Calendar.DAY_OF_WEEK)-1;//减1
System.out.println("今天是一周的第几天:"+weekday);
int week=c.get(Calendar.WEEK_OF_MONTH);
System.out.println("今天是这个月第几周:"+week);
/*
* 国外 周天到周六 0~6 月份:0~11
* 国内 周一到周末 1~7 月份:1~12
*/
- 设置日期字段值 :set
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR, 2029);
int y=c.get(Calendar.YEAR);
System.out.println(y);//默认当前时间