1.之前的使用:
1)导包
2)创建键盘录入对象:Scanner sc = new Scanner(System.in) ;
构造方法:
public Scanner(InputStream source)
形式参数:抽象类:java.io.InputStream:字节输入流(用来读取字节数),如果方法的形式参数是一个抽象类,那么需要传递该抽象类的子类对象
System.in:System:是jdk提供的一类
public static final InputStream in:成员变量 :标准输入流
public static final PrintStream out:标准输出流
3.Scanner类中提供了一些判断功能:
1) public boolean hasNextXXX():判断当前是否是执行XXX类型(int,short,float,double...)
public XXX nextXXX() :接收指定XXX类型
4.Scanenr:键盘录入的细节问题
先录入int类型,在录入String类型 (nextLine())
问题:当前字符串录入数据:值就被漏掉了,原因就是回车符号(本身字符串)
解决:在下一次录入String类型前,再次创建一个Scanner类型对象
三:String 类代表字符串
1.字符串是常量;它们的值在创建之后不能更改(常量的地址值)
2. String类是一个特殊的引用类型
String类型如果作为参数传递,形式参的改变不会影响实际参数 (跟基本类型作为参数的效果一样)
3.null 和""一样吗? null:对象为空 "":空字符序列 "" +任何数据
4.String类的构造方法
public String():无参构造方法:创建一个字符串对象
public String(byte[] bytes):使用平台的默认编码集 :将字节数组---->构造出String类型
public String(byte[] bytes, int offset, int length):将字节数组的一部分转换成字符串
参数1:传递的实际字节数组对象
参数2:从哪个位置开始
参数3:指定长度
public String(char[] value):将字符数组---构造成一个字符串对象
public String(char[] value,int offset,int count) :将字符数组一部分转换成字符串
参数1:传递的实际字符数组对象
参数2:从哪个位置开始
参数3:指定长度
public String(String original):将一个字符串值存储进来,创建一个字符串对象
5.String类的常用方法:
1)equals()方法
public boolean equals(String otherString)
在String类型中:equals:比较是字符串的内容是否相同(底层已经重写Object的equals方法)
2).String类型的判断功能
public boolean equals(Object anObject):比较两个字符串内容是否相同
public boolean equalsIgnoreCase(String anotherString):不区分大小写比较
public boolean startsWith(String prefix):判断是否以指定的子串开头
public boolean endsWith(String suffix):判断是否以指定的子串结尾
public boolean isEmpty():判断字符串是否为空
3).String类的获取功能:
int length():获取字符串长度
public char charAt(int index):获取指定索引处的字符
public String concat(String str):字符串拼接功能:使用当前字符串和指定str字符串进行拼接
public int indexOf(int ch):获取指定字符在此字符串中第一次出现索引值
public int indexOf(String str):获取指定字符串在此字符串中第一次出现索引值
4)String类的分割功能
public String[] split(String regex):通过指定的字符串进行分割,返回值字符串数组
5)String类转换功能:
public char[] toCharArray():将字符串转换成字符数组
public byte[] getBytes() :将字符串----变成字节数组 (过程:编码)
public static String valueOf(XXX xx):可以将任何类型的数据转换成String
public String toUpperCase():将此字符串转换成大写
public String toLowerCase():将此字符串转换成小写
6)String类的截取功能
public String substring(int beginIndex):从指定位置开始截取,默认截取到末尾
public String substring(int beginIndex,int endIndex) 从指定位置开始截取,到指定位置结束,但是包含beginIndex,不包含endIndex索引(包前不包后)
7)替换功能
public String replace(char oldChar,char newChar):将以前的字符用新的字符替换掉
public String replace(String oldStr,char newStr):将以前的字符用新的字符替换掉
8)去除两端空格
public String trim()
9)按照字段顺序比较! :如何比较的,如果第一和字符不相等第一个减第二个,若都相同,长度相减
public int compareTo(String anotherString)
四.StringBuffe类
1.StringBuffer:线程安全的可变字符序列 ,提供字符串缓冲区
2.StringBuffer中的方法
1)两个获取功能
int length():获取长度(缓冲区中字符数)
public int capacity():获取缓冲区的容量大小
2) StringBuffer的构造方法:
public StringBuffer():空参构造,初始容量为 16 个字符。(默认的容量足够,不需要指定容量大小)
public StringBuffer(String str):构造一个缓冲区,指定字符串内容到缓冲区中,容量大小等于16个+当前字符串的实际长度
public StringBuffer(int capacity):指定容量大小,构造一个缓冲区
注意事项:不能将String类型的值赋值给一个StringBuffer类型
3)StringBuffer****的添加功能:**
public StringBuffer append(任何类型数据...):将任何类型的数据追加到缓冲区中(追加末尾)
public StringBuffer insert(int offset,String str/任何类型数据):将某个元素插入到指定位置
4)StringBuffer的删除功能
public StringBuffer deleteCharAt(int index):删除指定位置处的字符,返回缓冲区本身
public StringBuffer delete(int start,int end):删除从指定位置到指定位置结束(包前不包后,end-1位置)
5)关于:反转功能
public StringBuffer reverse():将缓冲区中的字符进行反转!
3.String <----> StringBuffer类型的相互转换
方式1:通过StringBuffer构造方法:StringBuffer(String str)
StringBuffer sb = new StringBuffer(s) ;
方式2:StringBuffer()无参构造+append(String str):追加
StringBuffer sb2 = new StringBuffer() ;
sb2.append(s) ;
4StringBuffer----->String类型的相互转换**
StringBuffer buffer = new StringBuffer("hello") ;
方式1tring类型的构造方法
String str = new String(buffer) ;
方式2 public String toString() 方法
String str2 = buffer.toString() ;
1. Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
public static double abs(double a/...):求某个数据的绝对值
public static double ceil(double a):向上取整
public static double floor(double a):向下取整
public static int min(int a, int b):求两个int数据的最小值
public static int max(int a,int b):求两个int数据的最大值
public static double random():随机数[0.0,1.0) ---------> Java提供随机数生成器:Random类 nextInt(int n)
public static int round(float a):四舍五入..
public static long round(double a)
public static double sqrt(double a):开根(一个正整数的平方根)
public static double pow(double a,double b):返回结果:a的b次幂
2. 静态导入(前提这些方法是静态的)
静态导入的格式:import static 包名.类名.方法名;
eg: import static java.lang.Math.abs;
import static java.lang.Math.random;
使用静态导入的注意事项:
如果当前类中出现了和导入的静态方法名一样,冲突了,在使用静态导入的这个的方法的时候**就必须带上限定(包名.类名)
八.:java.util.Calendar类:日历类
1.Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法 Calendar不能直接实例化
2.某一个类如果不能直接实例化:首先里面会存在一些静态功能,静态功能的返回值就是该类本身!public static Calendar getInstance()
public int get(int field):获取的日历字段的值!参数:传递日历字段
3.Calendar的成员方法:
给日历字段添加或者减去时间偏移量
1)public abstract void add(int field,int amount)
日历对象.add(Calendar.DATE,-5):当前日历时间的5天前
2) 设置当前年月日,日历时间public final void set(int year,int month, int date)
Eg:
public class CalendarDemo2 {
public static void main(String[] args) {
//创建日历类对象
Calendar c = Calendar.getInstance() ;
int year = c.get(Calendar.YEAR) ;
int month = c.get(Calendar.MONTH) ;
int date = c.get(Calendar.DATE) ;
System.out.println(year+"-"+(month+1)+"-"+date);//2020-10-21当前日期时间
System.out.println("--------------------------");
//3年前的今天
//public abstract void add(int field,int amount)
c.add(Calendar.YEAR, -3);
int year2 = c.get(Calendar.YEAR) ;
System.out.println(year2+"-"+(month+1)+"-"+date);
//5年后的10天前
//对年设置偏移量,DATE设置偏移量
c.add(Calendar.YEAR, 5);
c.add(Calendar.DATE, -10);
int year2 = c.get(Calendar.YEAR) ;
int date2 = c.get(Calendar.DATE) ;
System.out.println(year2+"-"+(month+1)+"-"+date2);
System.out.println("----------------------------------");
//public final void set(int year,int month, int date)
c.set(2018, 4,12);
int year3 = c.get(Calendar.YEAR) ;
int month3 = c.get(Calendar.MONTH) ;
int date3 = c.get(Calenda.DATE) ;
System.out.println(year3+"-"+(month3+1)+"-"+date3);
}
}
九java.util.Date类
特定的瞬间,精确到毫秒。
1.构造方法:
public Date() 无参构造
2.成员方法:
public long getTime() :返回1970 年 1 月 1 日所表示的时间毫秒
3. String文本格式 和Date日期格式相互转换**
1).java.text.DateFormat:可以将日期和文本相互转换 DateFormat继承自Format类:都是抽象类,不能直接实例化!,提供更具体的子类java.text.SimpleDateFormat extends DateFormat
2).SimpleDateFormat的构造方法
public SimpleDateFormat(String pattern):
创建一个SimpleDateFormat对象
3)参数:指定一个模式 要遵循一定的规则(jdk对它规定了)
y年 ------2020 "yyyy"
M年中月份----10/03 "MM"
d月中的天数----05/21 'dd'
h:表示上午/下午的小时数 hh
H:一天中的小时数 HH
m:分钟数 mm
s:秒数 ss
模式:"yyyy-MM-dd HH:mm:ss"
4)Date---->String
格式化的步骤:
存在Date对象
创建SimpleDateFormat(String pattern)
public final String format(Date date):格式化方法
5)String------>Date
解析的步骤:
存在String "日期文本" "2020-10-21"
创建SimpleDateFormat(String pattern)
public Date parse(String source) throws ParseException
解析时SimpleDateFormat中的参数模式:必须和String 日期文本格式一致,否则出现解析异常(ParseException)
Eg:public class DateDemo2 {
public static void main(String[] args) throws ParseException {
//创建一个日期对象
Date date = new Date() ;
System.out.println(date);//Wed Oct 21 14:10:48 CST 2020 Date格式
//2)创建SimpleDateFormat:格式化的桥梁
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;//年-月-日
//3)格式化操作
String dateStr = sdf.format(date) ;
System.out.println(dateStr);
System.out.println("------------------------");
//日期文本
String source = "2022-6-30 20:00:30" ;
//String---->Date
//创建SimpleDateFormat对象
/必须和String 日期文本格式一致
//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
//解析:抛出一个异常
Date d = sdf2.parse(source) ;
System.out.println(d);//Thu Jun 30 20:00:30 CST 2022
}
}
十:System 类
包含一些有用的类字段和方法。它不能被实例化。
1. 字段:
public static final InputStream in :标准的"输入流"
public static final PrintStream out :标准的"输出流"
2. 键盘录入:
Scanner(InputStream in) ---->Scanner(System.in)
3. 输出语句:
System.out.println("xxx")----->System.out--->PrintStream ps (字节打印流)
ps.println("x") : 字节打印流调用方法名println(String str)
4. 成员方法:
1).public static void gc() 运行垃圾回收器(手动开启)
实际开发中,开发者不需要开启,运行垃圾回收器,它会调用Obejct类finalize(),回收没有更多引用的对象
2).public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从原数组中的指定位置开始进行复制指定length长度复制到目标数组中的某个位置
参数1:指定源数组
参数2:源数组中的某个位置
参数3:目标数组对象
参数4:目标数组对象中的某个位置
3) public static void exit(int status):参数状态为0: 表示正常终止jvm
应用场景:模拟登录,注册操作(使用ArrayList)
System.exit(0) ;
4)public static long currentTimeMillis():**获取当前系统时间的毫秒值
十一.java.util.Random:随机数生成器
1.构造方法
public Random() :(推荐),产生的随机数是变化的
public Random(long seed):每次产生的随机数 是固定的!
2. 成员方法:
public int nextInt():获取的是int范围内的随机数
public int nextInt(int n):获取0到n之间的随机数[0,n)
3. 获取随机数两种方式:
Math类的random()方法: 返回值double类型
Random类空参构造+nextInt(int n):获取随机数
十二:java.math.BigDecimal
描述:对浮点类型的数据进行精确计算的!
1. 构造方法:
public BigDecimal(String val) :字符串"数字字符串"
2. 成员方法:
1). public BigDecimal add(BigDecimal augend) :求和
2). public BigDecimal subtract(BigDecimal subtrahend):减法
3). public BigDecimal multiply(BigDecimal multiplicand):乘法
4).public BigDecimal divide(BigDecimal divisor)