Java学习笔记(八)--基本数据类型包装类 Math类 Random类 Date类

时间:2023-02-27 15:11:19

基本数据类型包装类

为了方便基本类型的数据做更多的操作,java就针对每种基本数据类型给出了对应的类类型,这就是我们所说的基本类型的包装类。
Java学习笔记(八)--基本数据类型包装类 Math类 Random类 Date类


Integer类型

-字段:
MAX_VALUE:值为2^31-1的常量,它表示int类型能够表示的最大值。
MIN_VALUE:值为-2^31的常量,它表示int类型能够表示的最小值。

-构造方法:
Integer(int value):构造一个新分配的Integer对象,它表示指定的int值。
Integer(String s):构造一个新分配的Integer对象,它表示String参数所指示的int值。(注意:这里的字符串必须是由数字组成的字符串)

-各种成员方法:
toBinaryString(int i):以二进制(基数2)无符号指数形式返回一个整数参数的字符串表示形式。
toOctalString(int i):以八进制(基数8)无符号指数形式返回一个整数参数的字符串表示形式。
toHexString(int i):以十六进制(基数16)无符号指数形式返回一个整数参数的字符串表示形式。

int和String类型的相互转换:
int—>String:
方式1:String s = 100+“”;
方式2:String.valueOf(int);
方式3:Integer.toString(int);

String—>int:
Integer.parseInt(String);

JDK5的新特性
自动装箱:基本类型—-包装类类型
Integer.valueOf(int);
自动拆箱:包装类类型—-基本类型
i.intValue();


Character类型

Character类在对象中包装一个基本类型char的值。
-构造方法:

public Character(char value

-成员方法:
public static boolean isUpperCase(char ch):判断是否是大写字符
public static boolean isLowerCase(char ch):判断是否是小写字符
public static boolean isDigit(char ch):判断是否是数字
public static char toUpperCase(char ch):转成大写
pubic static char toLowerCase(char ch):转成小写

需求:键盘录入一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。

package com.edu.character;
import java.util.Scanner;
public class CharacterTest {
public static void main(String[] args) {
//创建键盘录入对象,录入数据
Scanner sc = new Scanner(System.in);

//录入字符串数据
String str = sc.nextLine();

//将字符创转换为字符数组
char[] chs = str.toCharArray();

//遍历数据拿出每一个字符进行if判断
int bigChar = 0;
int smallChar = 0;
int number = 0;

for (int i = 0; i < chs.length; i++) {
//System.out.println(chs[i]);
if (Character.isUpperCase(chs[i])) {
bigChar++;
}
if (Character.isLowerCase(chs[i])) {
smallChar++;
}
if (Character.isDigit(chs[i])) {
number++;
}
}

System.out.println("大写字符出现的次数"+bigChar);
System.out.println("小写字符出现的次数"+smallChar);
System.out.println("数字字符出现的次数"+number);

}

}

Math

Math:用于执行数学运算的类。
成员方法:
public static int abs(int a):取绝对值
public static double ceil(double a):向上取整
public static double floor(double a):向下取整
public static int max(int a,int b) :取较大值
public static double pow(double a,double b):a的b次方
public static double random():产生0到1之间的随机数
public static int round(float a):四舍五入

需求:写一个猜数字小游戏。

package com.edu.math;
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
//生成随机数
int ran = (int) (Math.random()*100+1);
//创建键盘录入对象,并获取键盘录入数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入你猜测的数字:");
int guessNumber = sc.nextInt();
while (true) {
//进行判断并给予提示
if (ran>guessNumber) {
System.out.println("小了!请继续输入:");
guessNumber=sc.nextInt();
}

if (ran<guessNumber) {
System.out.println("大了!请继续输入:");
guessNumber=sc.nextInt();
}

if (ran==guessNumber) {
System.out.println("恭喜你答对了!");
break;
}

}

}

}

Object

Object:是所有类的根类。所有的类都直接或间接继承自该类。
-创建学生对象打印学生对象的地址值(本质上是将地址值通过哈希算法算出的哈希值)。
注意:
–同一个对象的哈希值是一样的。
–哈希值一样的对象地址值未必一样。

-重写toString方法
toString():在默认情况下,打印的是对象的字符串表示,意义不大:
包名…类名+@+该对象哈希值的十六进制
所以,建议子类重写toString方法,自动生成即可,表示该对象的数据:
[类名 成员变量1=数据值1,成员变量2=数据剧值2,…]

-重写equals方法
equals():在默认情况下,比较的是地址值,没有意义,所以,建议子类重写该方法,自动生成即可。

-==和equals()的区别
第一:==的作用
–基本类型 数据值
–引用类型 地址值
第二:equals()
–只能比较引用类型,默认比较地址值
–如果重写了,按照重写后的规则进行


Scanner

Scanner:帮助我们从键盘获取数据。
-构造方法:

Scanner(InputStream source);
Scanner sc = new Scanner(System.in);

注意:System.in:in是System类下的一个静态的成员变量。

-成员方法:
int nextInt():获取int类型的数据
String nextLine():获取String类型的数据
异常:InputMismatchException:输入的数据和最终的结果类型不匹配。所以要什么类型就输入什么类型。

-当为同一个Scanner对象,数据的输入顺序问题
String,String
String,int
int,int
int,String
当先int再String就会出现问题。

解决
第一种:把所有数据都按照String输入,将来需要什么类型,就把String类型转换成什么类型。
第二种:创建一个新对象。


Random

Random:用于产生随机数的类。和种子相关(种子可以看作一个产生随机数的规则)。
-构造方法:
Random():没有种子,采取的是默认种子。
Random(long seed):可以指定种子,种子相同,产生的随机数相同。

需求:利用有无种子的方式创建对象,使用for循环产生十个随机数。

public class RandomDemo{
public static void main(String[] args){
Random d = new Random();
for(int i=0;i<10;i++){
System.out.println(d.nextInt());
}
}
}

-成员方法:
public int nextInt():返回int范围内的数据。
public int nextInt(int n):返回[0,n)之间的数据。
得到1-100之间的随机数:

new Random().nextInt(100)+1;

System

System:System类包含一些有用的字段和方法,它不能被实例化。
-成员方法:
public static void exit(int status):终止当前正在运行的 Java 虚拟机。根据惯例,非 0 的状态码表示异常终止。
public static long currentTimeMillis():获取当前时间的毫秒值。
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):复制数组
参数一:要复制的源数组
参数二:从源数组那个索引开始复制
参数三:需要复制到哪个数组中
参数四:从哪个索引开始进行覆盖
参数五:需要覆盖几个元素


Date

Date:类Date表示特定的瞬间,精确到毫秒。
-构造方法:
Date():默认获取的是当前的日期时间。
Date(long date):把当前的日期按照指定的毫秒值进行设定。

-成员方法:
public long getTime():获取日期对象的毫秒值。
public void setTime(long time):设置日期对象的毫秒值。


DateFormat

DateFormat:格式化和解析日期对象。
-格式化:Date—>String
String format(Date d)
-解析:String—>Date
Date parse(String s)

-构造方法:
SimpleDateFormat():用默认的模式格式化日期对象。
SimpleDateFormat(String pattern):用给定的模式格式化日期对象。
例如:
yyyy年MM月dd日 HH:mm:ss
yyyy-MM-dd HH:mm:ss

-成员方法:
public final String format(Date date):将一个Date格式化为日期/时间字符串。
public Date parse(String source)throws ParseException:从给定字符串的开始解析文本,以生成一个日期对象。

日期工具类DateUtils
需求:
1.让外界无法创建这个类的对象
2.设置的方法直接可以通过类名调用
3.可以获取 yy年MM月dd日
4.可以获取 HH:mm:ss
5.可以获取 yy-MM-dd HH:mm:ss

public class DateUtils {
//私有化构造
private DateUtils(){}

//可以获取 yy年MM月dd日
public static String getDate(){
//创建日期对象
Date d = new Date();
//创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yy年MM月dd日");
//调用方法格式化日期对象
String dateStr = sdf.format(d);
return dateStr;
}


//可以获取 HH:mm:ss
public static String getTime(){
//创建日期对象
Date d = new Date();
//创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
//调用方法格式化日期对象
String dateStr = sdf.format(d);
return dateStr;
}


//可以获取 yy-MM-dd HH:mm:ss
public static String getDateTime(){
//创建日期对象
Date d = new Date();
//创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
//调用方法格式化日期对象
String dateStr = sdf.format(d);
return dateStr;
}

}