Java里的常用类

Object类

object类:是所有Java类的祖先。每个类都是Object的子类,每个对象(包括数组)都实现了这个类的方法。

API:

getClass() ;返回一个对象实例的运行期类型

hashCode();返回对象实例的hash码,即内存地址

equlas();默认比较的内存地址;指出其他对象是否和当前对象相同;可以在子类中重写该方法,自定义相等条件

操作符"==" :基本数据类型比较两个数值是否相等;;引用数据类型比较的是两个地址是否相等

toString():打印对象信息;默认格式是(对象类型+@+hash码的十六进制值);可以在子类中重写以满足对象的属性输出

基本类型包装类(Integer、Character、Byte、Double···)

每个基本数据类型都有对应的包装类,里面包含了该数据所能取值范围的属性和这些属性的获取方法。

Integer类(int包装类)

构造方法:Integer i1 = new Integer(400);    //int ---> Integer
                 Integer i2 = new Integer("-400");//只能传入纯数值类型的字符串

System.out.println("int最小值:" + Integer.MIN_VALUE);//获取int类型最小取值

 System.out.println("int最大值:" + Integer.MAX_VALUE);//获取int类型最大取值

类型转化://Integer=>int         int i4 = i3.intValue();
               //int --> Integer         Integer i5 = Integer.valueOf(i4);     

              //String =》 int          int age = Integer.parseInt("25");

               //String =》 Integer         Integer age2 = Integer.valueOf("26");  

          //将int类型的十进制转换成二进制
        String s1 = Integer.toBinaryString(100);
        //将int类型的十进制转换成十六进制
        String s2 = Integer.toHexString(100);
        //将int类型的十进制转换成八进制
        String s3 = Integer.toOctalString(100);

Character类(char包装类)

字符串String str转化为char[]数组:char [] = str.tocharArray();

判断字符char ch是否是数字\大写\小写  CHaracter.isDigit(ch)\\\Character.isUpperCase(ch)\\\\Character.isLowerCase(ch)

BigDecimal类(小数精准计算)

构造方法:BigDecimal bd = new BigDecimal(“122”);必须是字符串传入。

还有一种赋值方法::BigDecimal bd =  BigDecimal.valueOf(number);

        bd.setScale(2, BigDecimal.ROUND_DOWN);//保留小数点后2位,向下取值
        bd.setScale(2, BigDecimal.ROUND_UP);//保留小数点后2位,向上取值
        bd.setScale(2, BigDecimal.ROUND_HALF_DOWN);//保留小数点后2位,四舍五入取值

BigDecimal的加减乘除其实最终都返回的是一个新的BigDecimal对象,因为BigDecimal是不可变的 (immutable)的,在进行每一步运算时,都会产生一个新的对象,

Random类(生成随机数)

import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

/**
 * @author 宋新元
 * @date 2018年8月1日下午3:25:50 随机数
 * 
 */
public class RandomMethod {

	public static void main(String[] args) {
		Random random = new Random();

		// 生成[0,1.0)区间的小数
		double d1 = random.nextDouble();
		System.out.println(d1);

		// 生成[0,5.0)区间的小数
		double d2 = random.nextDouble() * 5;
		System.out.println(d2);

		// 生成[1.0, 2.5)区间的小数
		double d3 = random.nextDouble() * 1.5 + 1;
		System.out.println(d3);

		// 生成任意的整数
		int i1 = random.nextInt();
		System.out.println(i1);

		// 生成[0,10)区间的整数
		int i2 = random.nextInt(10);
		System.out.println(i2);

		// 生成[0,10]区间的整数
		int i3 = random.nextInt(11);
		System.out.println(i3);

		// 产生2个随机数
		/*
		 * 相同种子数Random对象的问题 r1和r2都是使用了相同的种子数,则每次产生的随机数都是一样
		 * 如果要得到不一样的随机情况,都只使用一个Random对象
		 */
		Random r1 = new Random(12);
		// Random r2 = new Random(100);
		for (int i = 0; i < 9; i++) {
			System.out.println("r1:" + r1.nextInt());
			// System.out.println("r2:" + r2.nextInt());
		}

		// 多线程环境下使用ThreadLocalRandom类,用法和Random类似
		ThreadLocalRandom localRandom = ThreadLocalRandom.current();
		System.out.println(localRandom.nextInt(10, 100));// 生成10~100之间的随机数
	}

}

Date日期类

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateMethod {

	public static void main(String[] args) {
		Date date = new Date();//获取当前时间,创建对象。
		System.out.println(date);//输入日历
		System.out.println(System.currentTimeMillis());//输出系统时间 毫秒
		
		//日期格式话
		DateFormat df = DateFormat.getDateInstance();//日期格式;输出 2018-1-1
		System.out.println(df.format(date));
		
		DateFormat df1 = DateFormat.getTimeInstance();//输出时间;10:03:34
		System.out.println(df1.format(date));
		
		DateFormat df2 = DateFormat.getDateTimeInstance();//日期+时间
		System.out.println(df2.format(date));
		
		DateFormat df3 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
		System.out.println(df3.format(date));//最完整的日期格式
		
		//自定义风格
		DateFormat df4 = new SimpleDateFormat("yyyy年MM月dd日");
		//"yyyy年MMMMdd日";八月    
		System.out.println(df4.format(date));
	    //把相对应格式的字符串化为时间:
		String str = "2222年08月13日";
		try {
			Date date1 = df4.parse(str);//这里需要抛出异常
			System.out.println(date1);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		DateFormat df5 = new SimpleDateFormat("yyyy年MM月dd日EE hh:mm:ss");
		//"yyyy年MMMMdd日";八月    
		System.out.println(df5.format(date));

	}

}

Calendar日期类

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class CalendarMethod2 {

	public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		// 获取当前时间,返回calendar对象
		System.out.println(cal);
		System.out.println(cal.getTimeInMillis());
		cal.set(2011, 11, 11);//重新定义时间
		Calendar c1 = cal;
		System.out.println(cal.getTimeInMillis());
		System.out.println(c1.getTimeInMillis());
		cal.set(2014, 11, 11);
		Calendar c2 = cal;// c1的值也在改变
		System.out.println(cal.getTimeInMillis());
		System.out.println(c2.getTimeInMillis());

		Calendar calendar = Calendar.getInstance();
		//获取calendar里面的属性,还有很多自己查找
		int year = calendar.get(calendar.YEAR);//当前时间的年份
		int month = calendar.get(calendar.MONTH) + 1;//当前时间的月份,从0开始计算
		int date = calendar.get(calendar.DATE);//当前时间的多少号
		int hour = calendar.get(calendar.HOUR);//当前时间的小时数,12小时制
		int minute = calendar.get(calendar.MINUTE);//当前时间的分钟数
		int scond = calendar.get(calendar.SECOND);
		int week = calendar.get(calendar.DAY_OF_WEEK);//当前时间是星期几,返回1~7;其中1是星期天,2是星期一·······
		System.out.println("年份:" + year);
		System.out.println("月份:" + month);
		System.out.println("日期:" + date);
		System.out.println("小时:" + hour);
		System.out.println("分钟:" + minute);
		System.out.println("秒:" + scond);
		System.out.println("星期:" + week);

		// 实例
		// 计算某一天是一年中的第几个星期
		// 判断2018-8-1
		cal.set(Calendar.YEAR, 2018);
		cal.set(Calendar.MONTH, 7);
		cal.set(Calendar.DAY_OF_MONTH, 1);
		int weekNo = cal.get(Calendar.WEEK_OF_YEAR);//获取一年中的第几周
		System.out.println(weekNo);

		// 计算一年中的某一周是几号===》 2018年第31周周一是几号?
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal2 = Calendar.getInstance();
		cal2.set(Calendar.YEAR, 2018);
		cal2.set(Calendar.WEEK_OF_YEAR, 31);//设置第31周
		cal2.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//设置第31周的星期一
		System.out.println(df.format(cal2.getTime()));
	}
}

String类

java.lang.String

  表示不变的常量字符串

  通常用于字符串比较,查找,类型转换等。

public class StringMethod {

	public static void main(String[] args) {
		// 字符串的定义初始化
		// 方式1:字面量的方式
		String s1 = "abc";// 将定义的值存放到字符串常量池

		// 方式2:使用构造
		String s2 = new String("abc");// 会产生2个对象,一个是new出来的存放在堆内存中,"abc"存放在常量池中对象

		// 方式三:字符串拼接
		String s3 = "a" + "b" + "c";
		// 输出
		System.out.println(s1 + "," + s2 + "," + s3);
		//把s2粘贴在s1后面·
		String string = s1.concat(s2);

		String string1 = "   I have a apple   ";
		String string2 = string1.trim();//去除string1两端空格
		System.out.println(string2);
		/*
		 * 针对字符串比较 == 比较内存地址 equal 比较内容
		 */
		System.out.println(s1 == s2);
		System.out.println(s2 == s3);
		System.out.println(s1 == s3);

		System.out.println(s1.equals(s2));
		System.out.println(s2.equals(s3));
		System.out.println(s1.equals(s3));
		
		// 以什么字符串开头/结尾
		String str = "fsvsbsbs";
		System.out.println(str.startsWith("fsv"));
		System.out.println(str.endsWith("sbs"));

		//控制台输入2个同学喜欢学科,如果相同输出喜欢的学科一样,否则不一样
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入tom喜欢的学科:");
		String tomCourse = sc.next();
		System.out.println("请输入jack喜欢的学科:");
		String jackCourse = sc.next();
		
//		if (tomCourse.equals(jackCourse)) {
		//使用忽略大小写的方式比较
		if (tomCourse.equalsIgnoreCase(jackCourse)) {
			System.out.println("两人喜欢的学科一致,都是" + tomCourse);
		} else {
			System.out.println("两人喜欢的学科不一致,tom喜欢:" + 
					tomCourse + ",jack喜欢:" + jackCourse);
		}
		
		//字符串拼接
		System.out.println("我有" + 100 + "块钱");
		System.out.println("我有" + (50 + 50) + "块钱");
		System.out.println("我有" + 50 + 50 + "块钱");
		
		//获取字符串的长度
		String str1 = "世界杯刚刚过去了";
        String string4 = str1.replace("杯", "球");//替换元素,但要创建一个String来接受,自身之不会改变
		System.out.println("str的长度:" + str1.length());
		
		//获取某个字符在字符串中的索引
		//如果找不到,则返回-1,反之返回索引
		int index = str1.indexOf('a');
		int index2 = str1.indexOf('了');
		System.out.println("a的下标:" + index);
		System.out.println("'了'的下标:" + index2);
		
		//从指定的位置开始查找,查看制定位置元素是否等于制定元素
		int index3 = str1.indexOf('了', 8);
		System.out.println("'了'的下标:" + index3);
		
		//查找字符串
		int index4 = str1.indexOf("刚刚");
		System.out.println("[刚刚]的下标:" + index4);
		
		
		/*****************倒过来查找*******************/
        //用来查找字符串中标方是否有相同字符
		int index5 = str1.lastIndexOf('了');
		int index6 = str1.lastIndexOf('了',3);//从指定位置开始查找
		System.out.println("'了'的下标:" + index5);
		System.out.println("'了'的下标:" + index6);
		
		/**
		 * 获取字符串中指定的字符,根据下标指定
		 */
		char ch = str1.charAt(2);
		System.out.println("[2]下标的字符是:" + ch);
		
		/********************字符串截取*********************/
		/*
		 * 一个参数:从指定的下标位置开始截取,一直到字符结束
		 */
		String chs = str1.substring(3);
		System.out.println("截取后的字符串:" + chs);
		
		/*
		 * 2个参数
		 *  参数一:指定下标位置开始
		 *  参数二:指定结束下标位置,但是不包括此下标的字符。
		 */
		String chs2 = str1.substring(3, 5);
		System.out.println("截取后的字符串:" + chs2);
	}
}

StringBuffer类

java.lang.StringBuffer

  表示允许对内容作改变的变量字符串。

  通常用于对内容和长度进行频繁的修改

  线程安全

public class StringBufferMethod {

	public static void main(String[] args) {
		//使用构造定义字符串
		StringBuffer buffer = new StringBuffer("hello ");
		
		//字符串追加
		buffer.append("Gem");
		System.out.println(buffer);
		
		//根据下标获取一个字符
		char ch = buffer.charAt(2);
		System.out.println(ch);
		
		//替换字符
		buffer.setCharAt(2, 'L');
		System.out.println(buffer);
		
		//反转
		System.out.println(buffer.reverse());

	}
}

StringBuild类

java.lang. StringBuilder

  表示允许对内容作改变的变量字符串。

  通常用于对内容和长度进行频繁的修改。

  线程安全

public class StringBuilderMethod {

	public static void main(String[] args) {
		// 创建该对象
		StringBuilder builder = new StringBuilder();

		// 赋值,追加值
		builder.append("Hello");
		System.out.println(builder);

		// 在指定的下标位置 插入某个字符串
		builder.insert(0, "Gem ");
		System.out.println(builder);

		// 替换字符串
		builder.replace(3, 4, "@");
		System.out.println(builder);

		// 删除某一段字符串
		builder.delete(3, 4);
		System.out.println(builder);

		// 反转
		System.out.println(builder.reverse());
		System.out.println(builder.length());
		System.out.println(builder);
		System.out.println(builder.capacity());// 查看字符对象容量
		System.out.println(builder.toString());

		// 可以手动更改builder长度
		builder.setLength(3);
		System.out.println(builder.toString());
	}
}

enum枚举类

import org.junit.Test;

enum Weekday{//不同元素使用(,)隔开,最后一位不加符号
	Sunday,Monday,TuesDay,Wednesday,Thursday,Friday,Saturday
}
public class EnumMethid {
	@Test
	public void show() {
        System.out.println(Weekday1.Monday.name());//没什么用,输出Monday
		System.out.println(Weekday1.Monday.toString());//没什么用,输出Monday
		int key = 3;
		switch (key) {//输出这是星期几
		case 1: System.out.println(Weekday.Sunday); break;
		case 2: System.out.println(Weekday.Monday); break;
		case 3: System.out.println(Weekday.TuesDay); break;
		case 4: System.out.println(Weekday.Wednesday); break;
		case 5: System.out.println(Weekday.Thursday); break;
		case 6: System.out.println(Weekday.Friday);break;
		case 7: System.out.println(Weekday.Saturday);break;
		default:break;
		}
		for(Weekday w : Weekday.values()){//依次遍历枚举类Weekday
			System.out.println(w);
		}
	}
}

  我们可以在枚举类里面添加属性和方法,通过枚举值来调用

  枚举类可以实现接口,然后通过枚举值来调用实现后的方法

public enum Weekday {
	//定义枚举值,多个枚举值之间使用逗号分开
	//我们也可以在枚举值添加属性、方法,通过枚举值来调用;;这里相当于构造方法Weekday(String);
	Sunday("这是星期天"),
	Monday("这是星期一"),
	Tuesday("这是星期二"),
	Wednesday("这是星期三"),
	Thursday("这是星期四"),
	Friday("这是星期五"),
	Saturday("这是星期六");
	
	private String annotation;//定义一个属性来储存中文注释
	private Weekday(String str) {//定义一个私有构造,用来类里的添加注释
		this.annotation = str;
	}
	public String getAnnotation() {
		return annotation;
	}
	public void setAnnotation(String annotation) {
		this.annotation = annotation;
	}
}

枚举类里面还有Sunday.compareTo(Weekday.Monday)方法,来判断枚举类元素的位置前后关系。

import org.junit.Test;

public class WeekdayTest {
	@Test
	public void show () {
		System.out.println(Weekday.Monday);
		System.out.println(Weekday.Monday.getAnnotation());
	}
}

同样,我们可以在枚举类里面添加抽象方法,在枚举值中加以实现,体现多态


public enum AnimalEnum {
	cat {
		public void play() {
			System.out.println("猫在树上玩");
		}
		public String likeFood() {
			return "fish";
		}
	},
	dog {
		public void play() {
			System.out.println("狗在捉老鼠");
		}
		public String likeFood() {
			return "bone";
		}
	},
	rabbit {
		public void play() {
			System.out.println("兔子在假睡");
		}
		public String likeFood() {
			return "carrots";
		}
	};
	public abstract void play();
	public abstract String likeFood();
}
import org.junit.Test;

public class AnimalTest {
	@Test
	public void show () {
		System.out.println(AnimalEnum.cat);
		AnimalEnum.cat.play();
		AnimalEnum.dog.play();
		AnimalEnum.rabbit.play();
		System.out.println(AnimalEnum.cat+"喜欢吃"+AnimalEnum.cat.likeFood());
	}
}

 

猜你喜欢

转载自blog.csdn.net/songxinyuandouxinyu/article/details/81410219