Java中一些特殊类的使用
Scanner类的使用
1、Scanner类主要用于接收从键盘录入的对象
2、Scanner类在util包下,在使用时需要导入java.util包
3、可以通过 new Scanner(System.in)方法创建Scanner对象
4、Scanner类有很多的成员方法,这里我们主要介绍nextInt()和nextLine两个方法的使用。nextInt()方法用于接收数字,nextLine()方法用于接收字符串
实例 分别从键盘接收一个数字和一个字符串并打印到控制台上,代码如下:
public static void main(String[] args) {
//创建键盘录入对象
@SuppressWarnings("resource")
Scanner sc=new Scanner(System.in);
Scanner sc_2=new Scanner(System.in);
//接收数字
System.out.println("请输入一个数字:");
int num=sc.nextInt();
//打印数字
System.out.println("num="+num);
//接收字符串
System.out.println("请输入字符串:");
String str=sc_2.nextLine();
//打印字符串
System.out.println("str="+str);
}
Random类的使用
1、Random类主要用于产生一个在一定范围内的随机数
2、可以通过构造方法new Random()创建一个随机数对象
3、可以通过成员方法nextLine(int num)生成一个范围在0~num-1内的随机数
实例 创建一个随机数并打印到控制台上,代码如下:
public static void main(String[] args) {
//创建对象
Random r=new Random();
//获取随机数
int random=r.nextInt(100)+1;
//打印获取到的随机数到控制台
System.out.println(random);
}
String类的使用
1、String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
2、字符串可以直接赋值进行创建(如 String str = “abc”),也可以根据String类的构造方法创建字符串。几个常用的创建字符串的构造方法有String(String original) 、String(byte[] bytes) 、String(byte[] bytes, int offset, int length) 。
实例 使用2中所述创造字符串的方法创建字符串"hello",代码如下:
public static void main(String[] args) {
//创建字符串方法一 直接赋值
String str="hello";
System.out.println("------------");
System.out.println("str="+str);
//创建字符串方法二
//String(String original) 传入一个字符串
String str1=new String("hello");
System.out.println("------------");
System.out.println("str1="+str1);
//创建字符串方法三
//String(byte[] bytes) 传入一个字符数组
char[] ch= {'h','e','l','l','o'};
String str2=new String(ch);
System.out.println("------------");
System.out.println("str2="+str2);
//创建字符串方法四
//String(byte[] bytes, int offset, int length) 传入一个字符数组、数组起始位置、截止长度
String str3=new String(ch,0,ch.length);
System.out.println("------------");
System.out.println("str3="+str3);
}
3、字符串创建以后可以判断所创建的字符串是否符合我们的需求。通常用到的方法有equals(Object anObject) ——判断字符串是否相等、equalsIgnoreCase(String anotherString) ——忽略字母大小写判断字符串是否相等、startsWith(String prefix) ——判断字符串是否以某一字符串开始、endsWith(String suffix) ——判断字符串是否以某一字符串结束。
实例 任取字符串实现3中所述方法,代码如下:
public static void main(String[] args) {
String s1="hello";
String s2="hello";
String s3="HellO";
//比较字符串的内容是否相同
System.out.println("------------");
System.out.println("s1==s2:"+s1.equals(s2));
System.out.println("s1==s3:"+s1.equals(s3));
//比较字符串的内容是否相同,忽略大小写
System.out.println("------------");
System.out.println("s1==s2(忽略大小写):"+s1.equalsIgnoreCase(s2));
System.out.println("s1==s3(忽略大小写):"+s1.equalsIgnoreCase(s3));
//判断字符串对象是否以指定的str开头
System.out.println("------------");
System.out.println("s1是否以he开头:"+s1.startsWith("he"));
System.out.println("s2是否以he开头:"+s3.startsWith("he"));
//判断字符串对象是否以指定的str结尾
System.out.println("------------");
System.out.println("s1是否以lO结束:"+s1.endsWith("lO"));
System.out.println("s2是否以lO结束:"+s3.endsWith("lO"));
}
4、可以通过String对象的一些成员方法获取字符串的一些特性。比较常用的一些方法有length() ——返回该字符串的长度、charAt(int index) ——返回指定索引处字符串、indexOf(String str)——返回某一字符串第一次出现的位置、substring(int beginIndex, int endIndex) ——返回该字符串指定区域的字字符串
实例 任取字符串实现4中所述方法,代码如下:
public static void main(String[] args) {
String str="Hello World!";
//获取字符串长度
System.out.println("---------------");
System.out.println("字符串的长度为:"+str.length());
//获取指定索引处字符
System.out.println("---------------");
System.out.println("字符串的第一个字符为:"+str.charAt(0));
//获取str在字符串对象中第一次出现的索引
System.out.println("---------------");
System.out.println("字符o第一次出现的位置是:"+str.indexOf("o"));
//获取指定位置,指定长度字符串(包含左边,不包含右边)
System.out.println("---------------");
System.out.println(str.substring(5, 11));
}
5、String对象的trim() 、split(String regex) 方法。
(1)trim()方法用于去除字符串两端的空格,字符串中间的空格不能通过该方法去除
(2)split对象用于将字符串按某一指定字符进行分割,分割后会返回一个String类型的数组
实例 任取字符串实现5中所述方法,代码如下:
public static void main(String[] args) {
String s1="helloworld";
String s2=" helloworld ";
String s3=" hello world ";
//去除字符串两端空格
System.out.println("---"+s1+"---");
System.out.println("---"+s1.trim()+"---");
System.out.println("---"+s2+"---");
System.out.println("---"+s2.trim()+"---");
System.out.println("---"+s3+"---");
System.out.println("---"+s3.trim()+"---");
System.out.println("------------------------");
//按照指定字符串进行分割
String s4="aa,bb,cc";
String[] strArray=s4.split(",");
for (String str : strArray) {
System.out.println(str);
}
}
StringBuilder类的使用
1、StringBuilder类是一个可变的字符序列
2、StringBuilder类对象通过它的构造方法进行创建。常用的构造方法有StringBuilder() ,StringBuilder(String str) ——传入一个字符串(赋初值)
如:StringBuilder sb=new StringBuilder(); StringBuilder sb=new StringBuilder(“Hello World!”);
3、StringBuilder类的append(?)方法、insert(int offset,?)方法和reverse()方法
(1)StringBuilder类的append是一个重载方法,有很多的重载。可以接收String,char,char[],boolean,int,float,double,long,Object,StringBuffer类型的参数。
如:sb.append(123); sb.append(“123”);
(2)StringBuilder类的insert(int offset,?)也是一个重载方法。可以接受的参数类型与append方法相同。
如:sb.insert(1,123); sb.insert(1,“123”);
(3)reverse()方法的作用就是将StringBuilder中的内容反转。
实例 任意添加StringBuilder对象,并对其内容进行反转
public static void main(String[] args) {
StringBuilder sb=new StringBuilder();
//添加字符串
sb.append("hello");
sb.append(" world!");
System.out.println("sb:"+sb);
System.out.println("---------------------");
//反转字符串
sb.reverse();
System.out.println("sb:"+sb);
}
4、StringBuilder与String之间的互相转换。StringBuilder–>String主要使用toString()方法。String–>StringBuilder主要是通过StringBuilder的构造方法,在创建StringBuilder对象时传入String对象。
实例 String <–>StringBuilder,代码如下:
public static void main(String[] args) {
StringBuilder sb=new StringBuilder();
sb.append("hello world!");
//stringbuilder-->string
String s=sb.toString();
System.out.println("s:"+s);
System.out.println("-----------------");
//string-->stringBuilder
StringBuilder sb2=new StringBuilder(s);
System.out.println("sb2:"+sb2);
}
ArrayList类的使用
1、ArrayList类是可调整大小的数组的实现List接口(List接口继承Collection接口)。每个ArrayList实例都有一个容量 。 容量是用于存储列表中的元素的数组的大小。 它总是至少与列表大小一样大。 当元素添加到ArrayList时,其容量会自动增长。其中的元素可以重复
2、ArrayList类有两个常用构造方法。ArrayList() 方法和ArrayList(Collection<? extends E> c) 方法。使用ArrayList(Collection<? extends E> c)方法创建ArrayList对象后,对象存储的数据类型唯一。
如:ArrayList arrayList=new ArrayList(); 这个ArrayList对象只能够存储String类型的数据。
3、ArrayList类很方便实现数据的CURD(数据的增删改查)操作。常用的的方法有add(E e)——在列表的末尾添加指定元素、add(int index, E element) ——在列表指定位置添加指定元素、remove(int index) ——删除列表指定索引处的元素且返回该元素、remove(Object o)——如果指定元素存在,则将其删除(只删第一次出现) 、set(int index, E element)——对指定索引处元素之进行修改 、get(int index)——获取指定索引处元素 、indexOf(Object o) ——获取指定元素第一次出现时的索引值、size() ——获取列表中元素的个数、clear() ——清空列表、isEmpty()——判断列表是否为空
实例 实现3中所述方法
public static void main(String[] args) {
//创建集合对象
ArrayList<String> arrayList=new ArrayList<String>();
//添加元素
arrayList.add("hello");
arrayList.add("world");
arrayList.add("java");
System.out.println("arrayList:"+arrayList);
System.out.println("------------------------------");
//获取元素
System.out.println("arrayList[0]:"+arrayList.get(0));
System.out.println("arrayList[1]:"+arrayList.get(1));
System.out.println("arrayList[2]:"+arrayList.get(2));
System.out.println("------------------------------");
//获取列表中元素个数
System.out.println("arrayList.size:"+arrayList.size());
System.out.println("------------------------------");
//修改元素
arrayList.set(2, "android");
System.out.println("arrayList:"+arrayList);
System.out.println("------------------------------");
//删除元素
arrayList.add(1,"world");
arrayList.remove("world");
System.out.println("arrayList:"+arrayList);
arrayList.add(1,"world");
System.out.println("arrayList:"+arrayList);
arrayList.remove(1);
System.out.println("arrayList:"+arrayList);
}
4、ArrayList类的遍历。可以使用for循环,也可以使用Collection接口提供的迭代器iterator()。
实例 分别用for循环和iteration()实现ArrayList类的遍历
public static void main(String[] args) {
//创建集合对象
Collection<String> collection=new ArrayList<String>();
collection.add("hello");
collection.add("world");
collection.add("java");
//iterator迭代器
Iterator<String> it=collection.iterator();
//判断是否有元素
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("---------------------");
//foreach循环遍历
for (String str : collection) {
System.out.println(str);
}
}
Date类的使用
1、Date类用于表示特定的瞬间,可以根据需求表示时间
2、Date类常用的构造方法有Date(),Date(long date)。Date()方法会创建一个距离当前时间最近时间的毫秒数的Date对象。也就是当前时间据1970-1-1 00:00:00的毫秒数差。如:new Date();就表示系统时间。Date(long date)方法用于创建一个指定时间的Date对象。传入一个以毫秒为单位的时间参数。如:new Date(0);的时间就是1970-1-1 00:00:00(中时区时间)
3、Date类常用的成员方法有setTime(long time)——设置Date对象初始时间,getTime()——获取1970-1-1 00:00:00时间到设置时间的毫秒差。为了做实验方便,还需用到toLocaleString() 方法(已弃用)
实例 创建一个Date对象,设置其初识时间,最后将结果打印到控制台,代码如下:
public static void main(String[] args) {
//当前系统时间
Date date=new Date();
//将时间设置为初始时间 1970-1-1 00:00:00
date.setTime(0);
//返回的1970-1-1 00:00:00至今的毫秒数
System.out.println(date.getTime());
//返回时间标准格式(已过时)
System.out.println(date.toLocaleString());
}
4、Date类的格式化和转换。为了实现Date类的格式化和字符串之间的转换,我们需要借助SimpleDateFormat这个类。SimpleDateFormat常用的构造方法有SimpleDateFormat(String pattern) 。其中是指定一个日期格式。如:new SimpleDateFormat(“yyyy-MM-dd”);就是指定日期格式为“yyyy-MM-dd”。
(1)Date类的格式化输出可以利用SimpleDateFormat类的format(Date date)方法。传入一个日期类型参数,将其转换为指定的字符串格式。
(2)将一个字符串解析为Date类型可以利用SimoleDateFormat类的parse(String string)。传入的字符串必须和创建SImpleDateFormat对象时指定的格式一致,并且要抛出ParseException异常,防止解析错误。
实例 创建一个Date对象,先将其转换为指定格式字符串,然后将其重新转换为一个Date对象,代码如下:
private static void main(String[] args) {
//指定转换字符串格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//创建Date对象
Date date=new Date();
//将Date对象转换为指定格式字符串
String s=sdf.format(date);
System.out.println(s);
//将字符串解析为日期格式 解析格式必须和创建对象格式一样
Date date2 = null;
try {
date2 = sdf.parse(s);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(date2);
}
5、为了更加方便的对时间进行操作。Java里提供了一个抽象类Calendar类。
(1)如同其它抽象类一样,Calendar提供了一种类方法getInstance ,用于获取此类型的一般有用的对象。 Calendar的getInstance方法返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化。
如:Calendar rightNow = Calendar.getInstance();
(2)Calendar类提供了很多静态的成员变量。常用到的有Year,Month,DAY_OF_MONTH,Hour等。
(3)Calendar提供了很多成员方法。常用到的有get(int field) ——获取指定日历字段的值。当获取月份值时,要将最后的结果加1,因为默认1月为0;set(int field, int value)——对指定日历字段设置指定的值;add(int field, int amount) ——根据日期规则对日期字段的值进行加减
实例 获取当前时间年月日,然后对日期进行一定修改后,再次获取日期字段。将结果打印到控制台上,代码如下:
public static void main(String[] args) {
//获取系统当前时间
Calendar calendar=Calendar.getInstance();
//获取年、月、日
int year=calendar.get(Calendar.YEAR);
//1月默认为0 最后结果要加1
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");
//修改年月日
calendar.set(Calendar.YEAR, 2050);
calendar.add(Calendar.MONTH, +1);
//获取年、月、日
year=calendar.get(Calendar.YEAR);
//1月默认为0 最后结果要加1
month=calendar.get(Calendar.MONTH)+1;
day=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");
}