Java实用类的学习与使用

JavaAPI:
Java应用程序编程接口,是运行库的集合,预先定义了一些接口和类,程序员可以使用已经打包的接口和类来开发具体的应用,这能使编写的程序简洁高效,也极大的节约程序员的时间和经历。
JavaAPI提供了许多的常用的包,在这些包中,有许多的类,例如
java.lang : java使用最广泛的类,自动导入所有程序中,包含了最基础的类和接口、包装类、Math类、String类等常用的类都包含在此。
java.util : 包含了实用工具库,特别是Collection、List、Set、Map等集合类。
java.io : 包含了输入流和输出流有关的类。
java.net : 包含了与网络操作有关的类。
java.sql : 包含了与数据库相关的类。

枚举
枚举是由一组固定的常量组成的类型,使用关键字enum定义。
语法如下

public enum Genders {		//
	Male("男"),Female("女")

//如果枚举实例后面没有定义其他内容,可以不用;进行结束,但是如果枚举实例之后定义了其他内容,必须使用;结束
而且定义的枚举实例必须放在枚举类的第一行。
public enum Course {
	L1,L2,L3;
	private String str;

为什么要使用枚举?
如果想定义一个Color类,它只能有RED、GREEN、BLUE 3种值;其他的值都是不能被使用的
定义一个性别。对于人类来说,大众熟知的性别只有男和女。
一周的只有七天。周一到周末
一天只有24小时
这种具有固定属性,无法改变的要使用枚举类来定义条件
我们的类型是枚举类的类型,用户只能使用我们定义枚举类的值,不能使用别的值了
枚举类只能通过枚举类名.实例方法来调用
下面我们用一段代码来演示一下

//枚举类,定义了周日到周六的实例
public enum Week {
	SUN,MON,TUE,WED,THUR,FRI,SAT
	}
public class Weekend{
	public Week day; 
}
//新的一个测试类
	public class Test {
	public static void main(String[] args) {
		Weekend wek = new Weekend();
		wek.day = Week.SUN;
		//Wek.day = "周末";
		//Type mismatch: cannot convert from String to Week
		//类型不匹配:不能将字符串转换为周
		//因为我们已经将Weekend类中的day声明为一个Week的枚举类型。就不能使用直接赋值的方法。
		switch (wek.day) {
		case SUN:
			System.out.println("周日");
			break;
		case MON:
			System.out.println("周一");
			break;
		case TUE:
			System.out.println("周二");
			break;
		case WED:
			System.out.println("周三");
		case THUR:
			System.out.println("周四");
		case FRI:
			System.out.println("周五");
		case SAT:
			System.out.println("周六");
		default:
			System.out.println("一周只有七天,周一到周日");
		}
	}
}
//简单的举个例子,枚举类的实例可以当作switch的条件。

包装类
Java是面向对象的,但是Java中的基本数据类型不是面向对象的。所以在设计类的时候,为每个基本数据类型设计了一个对应的类,称为包装类
包装类把基本类型数据转换为对象
每个基本类型在java.lang包中都有一个相应的包装类
boolean ---- Boolean 布尔类型的包装类
int ---- Interger 整型的包装类
short ---- Short 短整型的包装类
byte ---- Byte 字节型的包装类
long ---- Long 长整型的包装类
double ---- Double 双精度浮点数的包装类
float ---- Float 单精度浮点数的包装类
char ---- Character 字符型的包装类
包装类和基本数据类型之间的转换:

		Integer i = new Integer(25);	
		Integer j = new Integer("30");
		int  w = i.intValue();
		System.out.println( w );   
		//25  包装类转换成基本数据类型
		System.out.println( i.intValue() );
		System.out.println( j.intValue() );  //因为Integer valueOf(String s) 可以返回保存制定的String值的Integer对象。
		所以可以在使用包装类时声明一个可以解析为相应数据类型的String类型的数据。且不能为null
		short c=15;
		Short a=new Short(c);
		Short e=new Short("10");
		System.out.println(a.shortValue());
		//可以先声明一个short类型的变量并赋值,在使用包装类时直接调用该变量
		Boolean boolen1=new Boolean(false);
		Boolean boolen2=new Boolean("TRue");    //true  True TRue TRUe TRUE  
		 只要这里面是true,无论大小写,不在单词中间添加其他字符的话(tr ue),该变量都是true
		Boolean boolen3=new Boolean("abc");
		boolean boolean4=boolen1.booleanValue();
		System.out.println(boolen1+"   "+boolen2);   //false   true
		System.out.println(boolen1+"   "+boolean4);   //false   false    
		//在使用Boolean设置属性时,如果声明的是一个字符串值,那么该字符串中只能时false 或者true  否则结果都是false
		//在声明时,可以使用条件判断

基本类型中,除了char类型的包装类Character的valueOf方法只有一个版本的定义。即valueOf (char c)
它返回一个表示指定char值的Character对象

		Character character1=new Character('a');  
		  //在声明Character包装类时,只能声明一个字符类型的数据,不能像其他基本数据类型一样声明一个字符串
		System.out.println(character1.charValue());

字符串转基本类型

		String str = "100";
		int a = Integer.parseInt(str);
		double b = Double.parseDouble(str);
		//基本数据类型使用相对于的包装类的.parse方法可以将字符串转换成基本类型
		char e = str.charAt(0);
		//字符串转成char类型  使用变量名.charAt方法

基本类型转为字符串

		int a = 10;
		String str = a + "";  //整型转成字符串
		double b = 10;
		String str2 = b + "";  //浮点型转成字符串
		String s = "" + 'c';		//字符型转成字符串
		Integer c = new Integer(a);  
		String str3 = c.toString();			//包装类转成字符串

包装类与相对应的数据类型之间可以自动拆装箱

		Integer intObject = 5;    		//基本类型转换成包装类
		int  intValue = intObject;		//包装类转换成基本类型

Math类
java.lang.Math类提供了一些基本数学运算和几何运算的方法。此类中的方法都是静态、常量的,没有子类
Math类中常用的方法有:

static int abs(int a)   返回int值的绝对值 
Math.abs(-8);  返回  8
static int max(int a, int b)   返回两个int值中最大的一个
Math.max(15,35);          返回35
static double random()   返回一个double类型的随机数,取值在0.0~1.0之间
Math.random();     返回一个0.0~1.0之间的随机小数

使用Math.random方法生成六个值,且取值范围在1~15之间
并确保六个值不重复且按序输出。

public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		HashSet<Integer> hash = new HashSet<Integer>();
		while(list.size()<6){
			Integer red = (int)(Math.random()*15+1);   
			//生成随机数乘15  此时取值范围在0~14之间。加1之后取值范围在1~15之间
			if(hash.add(red)){		//利用HashSet中的元素不能重复的特性,将随机生成的数据在此进行判断
									//如果该数据可以添加到HashSet中,就会返回一个true,这个数据就可以插入到ArrayList中
				list.add(red);
			}
		}

String类
String类位于java.lang包中,该包是被自动导入进所有程序中
在Java中,字符串被作为String类型的对象来处理
创建String对象的方法
String ss = “你好”;
或者String sss = new String(“你好”);
String类的常用方法
使用length方法返回字符串的长度
格式: 变量名.length();

		Scanner input = new Scanner(System.in);
		System.out.println("***欢迎进入注册系统***");
		while (true) {
			System.out.println("请输入手机号:");
			String num = input.next();
			if(num.length()<11||num.length()>11){  
				  //使用.length()方法判断字符串长度,
				System.out.println("手机号码长度不能小于11位也不能大于11位");
				continue;
			}
			System.out.println("手机号录入成功");
			break;
		}

使用equals方法来比较字符串的值是否相同,区别大小写
如果两个字符串的每个字符都相同,返回true,否则返回false

		Scanner input = new Scanner(System.in);
		System.out.println("***欢迎使用本系统***");
			System.out.println("请输入用户名:");
			String userName = input.next();
			System.out.println("请输入密码:");
			String passWord = input.next();
			if(userName.equals(”admin“)&&passWord.equals(”111555333“)){
			//使用equals方法判断用户输入的字符串是否相等。
				System.out.println("登陆成功");
			}else{
				System.out.println("账号或密码错误,请输入正确的账号密码");
			}

在这里插入图片描述在这里插入图片描述
在Java中 == 和equals()方法应用于字符串的比较时,比较的是不同的
equals()比较的是两个字符串的值 ==比较的是两个字符串对象的内存地址。

如何在比较两个字符串时不考虑大小写的问题
使用.equalsIgnoreCase()方法来进行比较

   	 String str1 = "Abc";
   	String str2 = "abc";
   	System.out.println(str1.equalsIgnoreCase(str2));
   	//输出结果为true

如果使用equals()方法比较两个字符串时,如果大小写不同 怎么将输出结果变为true
这时就要使用改变字符串中英文字符大小写的方法
toLowerCase() 转换字符串中的英文字符为小写
toUpperCase() 转换字符串中的英文字符为大写

		String str1 = "Abc";
		String str2 = "abc";
		str1 = str1.toLowerCase();
		str2 = str2.toLowerCase();
		System.out.println(str1.equals(str2));
		//输出结果为true

如何将两个字符串的内容添加到一个字符串中
使用.concat()方法或者使用加号进行字符串拼接

		String str1 = "abc";
		String str2 = "123";
		String result1 = str1 + str2;
		String result2 = str1.concat(str2);
		System.out.println(result1+”   “result2);  //输出结果都为abc123
	indexOf(int ch) 									|	搜索第一个出现的字符ch(或字符串value),
	indexOf(String value) 								|	如果没有找到,返回-1
	--------------------------------------------------- |---------------------------------------
	lastIndexOf(int ch) 								|	搜索最后一个出现的字符ch(或字符串value)
	lastIndexOf(String value)							|	如果没有找到,返回-1
	----------------------------------------------------|---------------------------------------
	String substring(int index)							|	提取从位置索引开始的字符串部分
	----------------------------------------------------|--------------------------------------
	String substring(int beginindex, int endindex)	  	|	提取beginindex和endindex之间的字符串部分
	----------------------------------------------------|----------------------------------------
	String trim()										|	返回一个前后不含任何空格的调用字符串的副本
	----------------------------------------------------|----------------------------------------
	String replaceAll(char oldChar, char newChar)		|	返回一个任何位置都不含空格的调用字符串的副本

使用使用indexOf()方法搜索第一个出现字符(字符串)的位置

		String str1 = "123。dw.txt";
		int index1 = str1.indexOf('。');
		System.out.println(index1);
		//输出值为3   因为在Java中 下标是从0开始  。在第四位。下标为3

使用lastIndexOf()方法搜索最后一个出现字符(字符串)的位置

		String fileName = "abc.java";
		int index1 = fileName.lastIndexOf(".java");
		if (index1 == -1) { // 字符串中没有.java时,返回值是-1
			System.out.println("该文件不是一个java文件");
		}else{
			System.out.println("该文件是一个java文件");
}

使用substring()方法获取从指定位置开始的部分字符串

		String temp = "无敌转转圈无敌";
		String temp1 = temp.substring(3);  //从字符串的第三个位置开始提取字符串  该位置不是下标
		System.out.println(temp1);			//转圈无敌

如果用户在输入数据时在开始时输入了一个空格,就会导致程序运行失败
怎么避免这个问题呢?
使用.trim()方法去除字符串首尾的空格

		Scanner input = new Scanner(System.in);
		System.out.println("***欢迎使用本系统***");
			System.out.println("请输入用户名:");
			String userName = input.next();
			System.out.println("请输入密码:");
			String passWord = input.next();
			if(userName.trim().equals(”admin“)&&passWord.trim().equals(”111555333“)){
			//先使用trim方法去除用户在开头和结尾输入的空格,再使用equals方法判断用户输入的字符串是否相等。
				System.out.println("登陆成功");
			}else{
				System.out.println("账号或密码错误,请输入正确的账号密码");
			}

如果用户在输入数据时在不同位置输入了空格,会导致程序运行失败
怎么避免这个问题呢?
使用replaceAll()方法删除所有的空格

		String str = " aaa  c c d"; 
		String str2 = str.replaceAll(" ",""); 
		System.out.println(str2); 
		//结果为aaaccd

如何将"如,果,真,的,有,一,天"拆分成单个字符串并进行换行输出
这时就要使用.split(separator,limit)方法来将字符串按照指定的符号为条件来拆分字符串
需要使用数组来进行接收

String str = "如,果,真,的,有,一,天";
		String[] strs = str.split(",");   //条件为","
		for (String temp : strs) {			//遍历该数组
			System.out.println(temp);
		}
		//如   果   真   的   有   一   天   此处输出时换行,为了节省空间 我用空格代替换行

在Java中除了使用String类存储字符串之外,还可以使用StringBuffer了来存储字符串
StringBuffer类是比String类更高效存储字符串的引用数据类型。尤其是在对字符串的连接操作上。
在使用是需要声明并且初始化 不需要进行导包处理
格式为:StringBuffer sbf = new StringBuffer(“wsc”);
常用的StringBuffer类的方法
toString()方法
将StrignBuffer类型的字符串转换成String类型的字符串

		StringBuffer sbf = new StringBuffer(”zcsdw“); 
		String result=sbf.toString();

append()方法 将参数链接到字符串后并返回

		StringBuffer sbf = new StringBuffer("你是谁");
		sbf.append("我爱你"); // 你是谁我爱你
		System.out.println(sbf);

insert()方法 在指定位置插入参数

		StringBuffer sbf = new StringBuffer("你是谁");
		sbf.insert(2, "55"); // 你是55谁    //  2为下标  从0开始 2是第三个,所以在第三个位置插入
		System.out.println(sbf);

delete()方法,删除字符串中指定范围之间的字符

		StringBuffer sbf = new StringBuffer("你是谁");
		sbf.delete(0, 2);				//删除的是开始到结束之前一位的字符
		System.out.println(sbf);    //谁

StringBuilder类是用来当作StringBuffer类的简单替换。两个类中的方法和用法基本相同
StringBuilder类是StringBuffer类是等价的,区别在于StringBuffer是线程安全的。
而StringBuilder类是单线程的,不提供同步,理论上效率更高

java.util包中的常用类
使用Date类获取当前系统时间

		Date date = new Date(); 
		System.out.println(date);

使用SimpleDateFormat类格式化时间

		Date date = new Date(); 
		System.out.println(date);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //年-月-日 时:分:秒
		String currentTime = sdf.format(date);		//将格式化的时间转换成字符串
		System.out.println(currentTime);
		//输出的时间为 2020-06-17 23:18:36

使用Calendar类获取日期及星期并使用Date和SimpleDateFormat将时间格式化

		Calendar c = Calendar.getInstance();
		System.out.println(c.getTime());
		System.out.println("今天是星期"+(c.get(Calendar.DAY_OF_WEEK)-1));
		//因为国外周日是第一天,所以在在获取星期的时候要减1
		//Wed Jun 17 23:31:09 CST 2020
		//今天是星期3
		Date date = c.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
		String times = sdf.format(date);
		System.out.println(times);

Random类生成随机数

		Random  random = new Random();
		int result = random.nextInt(33)+1;
		int result2 = random.nextInt(33)+1;
		System.out.println(result);
		System.out.println(result2);

在使用Random类生成随机数时,尽量不要再new的Random中传参
如果new了两个 Random 并且传参相同时,
产生的随机数永远是一样的值

		Random  random = new Random(10);
		Random  random1 = new Random(10);
		
		int result = random.nextInt(33)+1;
		int result2 = random1.nextInt(33)+1;
		System.out.println(result);
		System.out.println(result2);
		//此时产生的随机数值为28,无论运行几次,产生的随机数值都为28
		Random  random1 = new Random(10);
		int result12 = random1.nextInt(33)+1;
		int result22 = random1.nextInt(33)+1;
		System.out.println(result12);
		System.out.println(result22);
		//如果只存在一个Random,并且传参之后,两次产生的随机数虽然不同 但是是固定的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值