基本数据类型包装类
为了方便基本类型的数据做更多的操作,java就针对每种基本数据类型给出了对应的类类型,这就是我们所说的基本类型的包装类。
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;
}
}