clone方法
创建对象并返回副本
Object obj=s.clone();//进行复制操作(浅克隆)
Student s=(Student)obj;
throws:表示抛出异常了可能性,放在main(String[] args)这里,+异常具体名字{ }
Scanner类:提供判断功能
构造方法:public Scanner(InputStream source)
形式参数:抽象类:java.io.InputStream:字节输入流
如果方法的形式参数是一个抽象类,那么需要传递该类的子类对象
判断功能:
public boolean hasNextXXX():判断当前是否是秩序XXX类型
int short float double......
if(sc.hasNextInt()){
int num=sc.next.Int();
int line=sc.nextLine();//String 类型数据
System.out.println(num);
}
录入细节:
先录入int,在录入String。当前字符串录入数据值就被漏掉了,回车键本身就是字符串
处理:1:再度创建一个录入对象进行赋予
2:将sc.nextLine();换成sc.next();
String类:一旦被赋值,其值不能被改变
String 代表字符串
字符串是常量:它们的值在创建后不能更改(常量的地址值)
String str=“abcaa” studengt s=new student();
作为引用类型,当做参数传递,形式参数不会影响实参
String s=new String();
System.out.println(s);//打印的不是地址值:当前String类型中已经重写了Object的toString方法。
构造方法:
public String():无参构造,创建一个字符串对象空字符序
public String(byte[] bytes);:使用平台,偶然编码集,将字节数组构造为String类型
public String(byte[] bytes,int offset,int length):将字节数组的一部分转换为字符串
位置 个数
String s1=new String(“hello”);
System.out.println(s1); //hello
System.out.println(s1.length());//5
String 类型已经重写了Object方法,所以equals直接比较两个字符串内容是否相同
常量相加:常量相加后再比较常量池是否存在这个值,存在则返回地址,不存在再开辟空间。
变量相加:先开辟空间再相加
分割功能:
public String[] split(String regex):通过指定字符串进行分割,返回字符串数组
转换功能:
public char[] tcCharArray():将字符串转换成字符数组
byte[] getBytrs():将字符串--->变成字节数组
static String valueOf(XXX xxx):可以将任何类型数据转换为String类型
int i=100;
String.valueOf(i);
String toUpperCse();转换为大写
toLoweCase();转换为小写
String类的其他功能
获取每一个字符:char a=字符串变量.charAt(x);
替换:replace(char old,char new)
截取:substring(int begIndex):从指定位置开始默认截取到末尾
subtring(int beginIndex,int endIndex):从指定位置开始截取,到指定位置结束。包前不包后
去除前两端空格:trim()
按照字典顺序比较:compareTo(String anotherString):解析源码
String类型的应用
StringBuffer:支持可变的字符序列(字符缓冲区)
缓冲区中存储的内容都是字符串内容,但是类型为StringBuffer类型
StringBuffer,StringBuilder和String的区别
StringBuffer的构造方法
StringBuffer()空参构造
StringBuffer(String str)指定具体的内容存储到到字符缓冲区中
StringBuffer(int a)指定具体的缓冲区大小
常用功能
获取功能:int length()
反转功能:reverse()
替换类型:replace(ing star,int eng ,String atr):从指定位置开始,到指定位置结束,用字符串替换
返回类型为字符串
截取功能:substring(int start):从指定位置开始截取,末尾结束
substring(int statry ,int ebd ):从制定位置开始截取,指定位置前一位结束
返回类型为字符串
追加功能:append(任何类型数据):将任何类型数据追加到数据缓冲区中
插入功能:insert(int offers,char[] arr):在指定位置插入一个字符数组,字符数组可以换为任何类型数据
删除功能:deleteCharAt(int a)删除指定索引处了字符
delete(int start,intend)删除从指定位置开始到后面减一位置的字符;包前不包后
转换String:toString()方法。
关于String类型和StringBuffer的相互转换
StringBuffer作为形式参数,形参的改变会改变实际参数
处理方式:
1:通过StringBuffer构造方法:StringBuffer(String str)
2:将StringBuffer通过无参构造方法StringBuffer()+append(Stringstr)追加
3:用String类型的构造法:String(StringBuffer buffer)
4:用toString方法:String str=new String(buffer)
区别:StringBuffer与StringBulid
共同点:两者之间兼容,功能是相同的
StringBuffer:可变的字符序列
线程是安全的--->同步的--->执行效率低
StringBulid:可变的字符序列、
线程不安全--->不同步的--->执行效率高
在单线程程序中,StringBulid替换StringBuffer因为效率高
共同点:都属于引用类型,都是容器
StringBuffer:可变的字符序列(长度可变)
里面可以存储任何数据类型 length()方法
数组:(长度固定)只能存储同一种类型元素
length属性,
Interger类以及Chercter(int ,char的包装类类型) (传入Strin数据,创建Interger i=100类型数据并赋值,i+=200;输出i)
自动拆装箱功能,静态导入
为了方便操作,每一个基本类型,都提供了对应的引用类型–>Interger
Interger.toBinaryString(int i);二进制方法
Interger.toOctalString(int i):八进制
Interger.toHexString(int i):十六进制
Interger.MIN_VALUE :最小值
Interger.MAX_VALUE :最大值
构造方法:转换为Interger类型
Interger(int value)
Interger(String s )
如何将Interger转换为String类型
String s=Interger.toString();
String转换为int类型:
parseTnt(String s);
Interger nem2=Interger.valueOf(str);
功能:Interger.parseInt(“XXX”)
或者相互转换
自动拆装箱(基本类型首字母大写)
int和Interger类型的自动升降转换
其他类:Carlendar
判断功能
Carlendar.isUp…大写
Carlendar.isLow…小写
Carlendar.isDig…数字
其他类
日历类 Date 能够拿到当前计算机系统的日历时期,系统资源
Calendar类,日历类,抽象类 不能直接实例化
首先,里面存着一些静态功能,返回值就是该类本身
public static Calender getInstance();
创建对象:
Calendar c=new Calendar.getInstance();
如何显示当前日历C的具体时间,年,月,日
方法:get(int field):获取日历字段的值 参数:日历字段
int year=c.get(Calender.YEAR);
int month=c.get(Calender.MONTH);
int date=c.get(Calendar.DATE);
System.out.println(year+“年”+(month+1)+“月”+date+“日”);
add(int a)方法,添加或者减去时间偏移量
日历对象.add(Calendar.DATE,-5)日历的五天前
//3年前的今天
c.add(Calendar.YEAR,-3);
int year2=c.get(Calendar.YEAR);
再度输出即可
//5年后的10天前
c.add(Calendar.YEAR,5);
c.add(Calendar.DATE,-10);
再度输出
设置自己的时间:
set(int year,int month,int date)方法
c.set(2018,5,12);
int year=c.get(Calender.YEAR);
int month=c.get(Calender.MONTH);
int date=c.get(Calendar.DATE);
然后在打印输出
日期类 Random,
日期:Date精确到毫秒;特定的瞬间
构造方法:无参构造
public Date()
导包:import java.util.Date;
//创建对象
Date date=new Date();
输出date 即可得到当前时间
成员方法:
public long getTimp():返回1970年1月1日 的时间毫秒
应用场景:String和Date的相互转换
Date—>String 文本“格式化”操作
java.text,DateFormat:可以将日期和文本相互转换,但是是抽象类,继承自Date
它的子类:SimpleDateFormate
构造方法:SimpleDateFormate (String pattern)
参数:指定一个模式,要遵循一个规则
y年------2020 yyyy
M月份----10/03 MM
d月中的天------03-12 dd
h上午或者下午的小时
H一天中的小时 hh/HH
m:分钟数 mm
s:秒数 ss
创建对象:
Date date=new Date();
输出
SimpleDateFormate sdf=new SimpleDateFormate (“yyyy-MM-dd”);
输出
String datesr=sdf.format(date);
输出
//日期文本 String---->Date
String soc="2020-6-30";
SimpleDateFormate sdf=new SimpleDateFormate ("yyyy-MM-dd");
Date d=sdf.parse(soc);
输出即可
工具类:
构造方法私有化:外界不能直接创建对象
提供静态功能
格式化
解析
public static String dateString(Date date,String pattern){
//将Date日期格式转换成日期文本模式
//patte 指定模式yyyy-MM-dd
//创建对象
SimpleDateFormate sdf=new SimpleDateFormate (pattern);
//格式化
String dateStr=sdf.format(date);
return dateStr;
//或者直接简便:return new SimpleDateFormate (pattern).format(date);
}
日期文本转换为日期格式:
public static Date stringDatr(String sou,Sting pattern)throws ParseException(抛出异常){
SimpleDateFormate sdf=new SimpleDateFormate (pattern);
Date date=sdf.format(sou);
return date;
}
Math类的其他功能,直接用Math.来访问方法
abs(double a/…):求某个数据的最值
ceil(double a)向上取整
floor(double a )向下取整
min(int a ,int b)
max(int a, int b)
round(float 返回 int/double 返回 long):四舍五入
random()随机数
sqrt(double a )开正平方根
pow(double a ,double b)a的b次幂
导入方法:
静态导入
import static 包名.类名.方法名;
注意事项:
如果当前类中出现了和导入静态方法名一样,冲突了,在使用这个方法的时候必须加上限定(包名.类名)
exit(int statsu):参数为0
表示正常终止jvm
System.exit(0);
currenTimeMillis():获取当前系统时间的毫秒值
long l=System.currenTimeMillis();
Rutime类:代表每一个java程序运行实例
Arrays工具类
针对数组操作工具类
Arrays.short(arr);排序
Arrays.toString(arr);任意类型的数组转换
System.arraycopy(arr1,2,arr2,3,2):从arr1的2角标(从0开始)开始复制两个元素到arr2的3位置(从1开始)
Random类,产生一个随机数:java.util.Random
Random a=new Random();
int r=a.nextInt(int b)得到一个0–b之间的随机数
java.math.BigDecimal;
描述对浮点类型数据的精确计算
构造方法:
BigDecimal(String val)
内部蕴含方法:
add(BigDecimal a)加
subtract(BigDecimal a)减
multiply(BigDecimal a )乘
divide(BigDecimal a )除
方法用对象引用!!
集合
Collection java.util.Collection
基本功能
添加
add(Object a )
删除
remoce(Object a )
判断
contains(Objext a )
isEmpty()
clear()
高级功能
对集合的遍历
遍历的几种方式
迭代器遍历 Iterator接口
Collection的高级功能
addAll(Collection c)添加一个集合中的所有元素
removeAll(Collection c):删除
conrainsAll(Collection c):包含
Collection b.retainAll(Collection c):取交集
创建对象
Collection c1=new ArrayList();
c.add("xxx");
c2.add("yyy");
System.out.println(c.addAll(c2));:将c2 中的所有元素添加到c中
c1.removeAll(c2);:把c1中的c2包含的元素删除
c1.conrectionAll(c2):若c1中包含c2的所有元素,即为true
c1.retainAll(c2):将c1与c2相交的元素留下,将交集的元素给c1,boolean表示的是c1是否发生变化
Interator iterator();专有遍历方式
(返回值接口) (方法:返回该接口的子实现对象)
Iterator:存在一个方法
Oblect next():获取下一个元素
//创建一个集合,存储字符串元素
Collction c=new Arraylist
//添加字符串元素
c.add("xxx");
//获取当前Collection集合的迭代器
Interator i=c.iterator();
//获取下一个元素
Object next=i.next();
//第二次获取
System.out.println(i.next);//运行一次,获取一次
//加入判断:有元素可以迭代就继续,没有就停止
//hasNext():判断当前迭代器中是否有下一个可以遍历的元素,存在就返回true
if(i.hasNext()){
Object next =it.next();
System.out.println(next);
}
//不明确循环次数,优先考虑while循环
while(i.hasNext()){
System.out.println(it.next());
}
//输出元素从同时,输出字符串长度
//向下转型
String s=(String)i.next();
System.out.println(s+"--"+s.length());
泛型:
什么是泛型:数组在定义时,就已经将类型限定了
集合为了迎合数组的特点,在创建数组的时候,将类型定义了,来保证集合中的元素类型一致
格式:
<数据类型:引用类型>
特点:将集合的类型创建的时候就明确
好处:
避免强制类型转换
将运行时期异常提前到编译时期
解决了黄色警告线问题
提高了程序安全性
应用在那些地方:
集合中使用居多
定义在类上
可以放在方法上
也可以放在接口上
加入泛型之后,大大提高程序安全性,定义在类上
泛型高级通配符:<?>
当前Objet类型/任意java类型