java夯实基础-常用实用类

本文测试java中常用的类

包括:Object 、 String、 StringBuffer、 Tokenizer、 Date、 Calendar、 Math BingInteger

一、Object:所有类的祖先

 

package com.wllfengshu.test;

/**
 * Object类
 * @author Administrator
 *补充:java包分为核心包和扩展包,核心包名以java开头,扩展包名以javax开头
 */
public class Test1Object {
	public static void main(String[] args) {
		//1、Object类是所有类的祖先,所有的类都隐式继承Object,Object类中的三个方法如下
		
		//2、测试equals()方法
		A a=new A();
		B b=new B();
		System.out.println(a.equals(b));//比较对象是否指向同一个引用
		/**
		 * Object中的equals方法如下:
		 * public boolean equals(Object obj){
		 * 	return (this==obj)
		 * }
		 */
		
		//3测试hashCode()方法
		//hashCode()用来返回对象的散列码(哈希值)
		String c="123";
		String d="123";
		System.out.println(c.equals(d));
		System.out.println(c.hashCode() == d.hashCode());
		//总结:常见String类和基本数据类型的包装类都满足:若equals方法为true,则哈希值相等
		
		//4测试toString()方法
		//对象调用该方法返回默认格式:类名@对象的十六进制哈希值
		System.out.println(a);
	}
	
}
class A{
	public void a(){
		System.out.println("a");
	}
}
class B{
	public void b(){
		System.out.println("b");
	}
}

 

二、 String:字符串

 

package com.wllfengshu.test;

import org.junit.Test;

/**
 * 测试 String字符串的特点、常用方法、注意事项
 *    StringBuffer、StringBuilder
 * @author Administrator
 *
 */
public class Test2String {
	
	//0、String类为fianl类,不能被继承
	/*class extString extends String{//错误:String类为final类,不能被继承
	 }*/
	
	//1、创建字符串对象的方法
	@Test
	public void test1(){
		String a="ABC";//通过字符串常量创建
		String b=new String("ABC");//通过构造函数创建(注:String的构造函数还有很多)
		String c=new String("ABC");
		String d="ABC";
		System.out.println(a==b);//false:双等号比较的字符串的首地址,故不想等
		System.out.println(a.equals(b));//true
		System.out.println(b==c);//false:双等号比较的字符串的首地址,故不想等
		System.out.println(a==d);//true:变量a和d都指向字符串常量"123"
	}
	
	//2、String类常用方法
	@Test
	public void test2(){
		String a="ABCDE";
		System.out.println(a.length());//或者字符串长度
		String b="ABC";
		System.out.println(a.equals(b));//比较字符串变量a和b是否指向相同实体
		String c="abc";
		System.out.println(c.equalsIgnoreCase(b));//忽略大小写比较c和d是否指向相同实体
		
		System.out.println(a.startsWith("AB"));//判断字符串a是否以AB开头
		System.out.println(a.endsWith("E"));//判断字符串a是否以E结尾
		
		System.out.println(a.compareTo("AD"));//a按照字典顺序与AD字符串比较大小,相等返回0
		System.out.println(a.compareToIgnoreCase("ab"));//按照字典顺序比较,忽视大小写
		
		System.out.println(a.contains("CD"));//判断字符串a是否含有指定字符串CD
		
		System.out.println(a.indexOf("C"));//从字符串a的开头检查,首次出现字符串C的索引
		System.out.println(a.indexOf("C",1));//从字符串a的索引为1处检查,首次出现字符串C的索引
		System.out.println(a.lastIndexOf("C"));//从字符串a的开头检查,最后一次出现字符串C的索引
		
		System.out.println(a.substring(3));//从索引为3处一直截取到最后,包括3
		System.out.println(a.substring(1, 3));//从索引1截取到索引3,不包括3
		
		String d="  ABCDEF G ";
		System.out.println(d.trim());//去掉字符串d前后的空格
		
		String e="123hello456".replaceAll("[a-zA-Z]", "你好");
		System.out.println(e);//把字符串中对于满足正则表达式[a-zA-Z]的部分替换为"你好"
		
		String f="abcd efgh ijk";
		String[] g=f.split(" ");//按照空格进行分解字符串,空格可以是其他正则表达式
		System.out.println(g[1]);
				
	}
}

 

三、 StringBuffer:可编辑字符串

 

package com.wllfengshu.test;

/**
 * 测试StringBuffer 和  StringBuilder
 * @author Administrator
 *
 */
public class Test3StringBuffer {
	public static void main(String[] args) {
		//0、String字符串不能修改,但是StringBuffer创建的字符串可以修改
		
		//1、构造函数:
		StringBuffer a = new StringBuffer("abc");//无参
		System.out.println(a.length());//存放的字符串的长度
		System.out.println(a.capacity());//该对象实际占用空间
		
		//2、常用方法(很多方法都有重载)
		System.out.println(a.append("123456"));//追加内容
		System.out.println(a.charAt(2));//获取索引为2的字符
		a.setCharAt(1, 'k');//把索引为1的位置替换为字符'k'
		System.out.println(a);
		System.out.println(a.insert(1, 'h'));//把指定字符插入到索引为1出
		StringBuffer b=a.reverse();//字符串翻转
		System.out.println(b);
		StringBuffer c=a.delete(1, 2);//删除字符串中索引1到2的字符(不包括索引2)
		System.out.println(c);
		StringBuffer d=a.replace(2, 3,"4");//用字符串4替换字符串a索引2到3的字符(不包括索引3)
		System.out.println(d);
		
		//3、StringBuilder和StringBuffer区别
		//StringBuilder:线程非安全的(建议单线程时使用)
		//StringBuffer:线程安全的(建议多线程时使用)
	}
}

 

四、 Tokenizer:字符串分解

 

package com.wllfengshu.test;

import java.util.StringTokenizer;

/**
 * 测试StringTokenizer
 * @author Administrator 
 * 字符串分析器
 */
public class Test4StringTokenizer {
	public static void main(String[] args) {
		//默认使用空白字符、制表符、换行符、回车符和换页符进行分割
		StringTokenizer a = new StringTokenizer("ni hao");
		while (a.hasMoreElements()) {
			String b = (String) a.nextElement();
			System.out.println(b);
		}
        /*
        输出:
        ni
        hao
        */
		//用指定字符来进行分割(可以同时多个字符)
		StringTokenizer c=new StringTokenizer("ni hao,wo hai mei chi fan"," ,");
		while (c.hasMoreTokens()) {
			String d = (String) c.nextElement();
			System.out.println(d);
		}
        /*
        ni
        hao
        wo
        hai
        mei
        chi
        fan
        */
	}
}

 

五、 Date:日期

 

package com.wllfengshu.test;

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

/**
 * 测试Date类
 * @author Administrator
 * 日期
 */
public class Test5Date {
	public static void main(String[] args) {
		Date a = new Date();
		System.out.println(a);
		SimpleDateFormat b=new SimpleDateFormat("yyyy-MM-dd");//日期格式化
		System.out.println(b.format(a));
	}
}

 

六、Calendar:日历

 

package com.wllfengshu.test;

import java.util.Calendar;
import java.util.Scanner;

/**
 * 测试Calendar、程序输入日历的例子
 * @author Administrator
 * 日历
 */
public class Test6Calendar {
	public static void main(String[] args) {
//		Calendar a=Calendar.getInstance();
//		a.set(2017, 9, 28);
//		int b = a.get(Calendar.MONTH);
//		System.out.println(b);
//		
//		//eg:判断1949和2009之间相隔多少天
//		Calendar calendar=Calendar.getInstance();
//		calendar.set(1949, 2, 1);//注意:这里是三月
//		long time1=calendar.getTimeInMillis();
//		calendar.set(2009, 2, 1);
//		long time2=calendar.getTimeInMillis();
//		long days=(time2-time1)/(24*60*60*1000);
//		System.out.println(days);
		
		@SuppressWarnings("resource")
		Scanner scanner=new Scanner(System.in);
		String in = scanner.nextLine();
		String[] input=in.split(" ");
		String year=input[0];
		String month=input[1];
		System.out.println("输入日期为:"+year+"年"+month+"月");
		MyCalendar mc=new MyCalendar(year,month);
		String[] output=mc.getCalendar();
		char[] str="日一二三四五六".toCharArray();
		for (char c : str) {
			System.out.printf("%7c",c);
		}
		for (int i = 0; i < output.length; i++) {
			if (i%7==0) {
				System.out.println();
			}
			System.out.printf("%4s",output[i]);
		}
	}
}
/**
 * 通过里面的getCalendar()方法获取一个日历,存放在数组中
 */
class MyCalendar{
	private int year;
	private int month;
	public MyCalendar(String year,String month){
		this.year=Integer.valueOf(year);
		this.month=Integer.valueOf(month);
	}
	public String[] getCalendar() {
		String[] a=new String[42];//把每天几号都存在数组中
		Calendar calendar=Calendar.getInstance();
		calendar.set(year, month,1);
		int weekDay=calendar.get(Calendar.DAY_OF_WEEK)-1;//计算1号星期几
		System.out.println("这个月的1号是星期:"+weekDay);
		int day=0;
		if (month==1 || month==3 || month==5 || month==7 || month==8 ||month==10 || month==12) {
			day=31;
		}else if (month==4 || month==6 || month==9 || month==11) {
			day=30;
		}else if (month==2) {
			if (((year%4==0)&&(year%100==0)) ||(year%400==0)) {
				day=29;
			}else {
				day=28;
			}
		}else {
			System.out.println("月份错误");
		}
		System.out.println("这个月有的天数:"+day);
		for (int i = 0; i < weekDay; i++) {//1号前几天都为空
			a[i]="";
		}
		int flay=1;//几号
		for (int i = weekDay; i < weekDay+day; i++) {//处理后面的天数
			a[i]=String.valueOf(flay);
			flay++;
		}
		for (int i = weekDay+day; i < a.length; i++) {//处理多余的
			a[i]="";
		}
		return a;
	}
}

 

 

七、Math:数学

 

package com.wllfengshu.test;
/**
 * 测试Math中常用数学方法
 * @author Administrator
 *
 */
public class Test7Math {
	public static void main(String[] args) {
		int a=-34;
		int b=3;
		System.out.println(Math.abs(a));//返回a的绝对值
		System.out.println(Math.pow(a, b));//求a的3次幂
		System.out.println(Math.sqrt(b));//返回b的平方根
		System.out.println(Math.max(a, b));//返回a,b中最大的值
	}
}

 

八、 BingInteger:大整数

 

package com.wllfengshu.test;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * 测试大数类
 * @author Administrator
 *
 */
public class Test8BigInteger {

	public static void main(String[] args) {
		BigInteger a=new BigInteger("1212121212");//整数
		BigInteger b=new BigInteger("121212");//整数
		BigDecimal c=new BigDecimal("12121.121212121212");//浮点数
		//使用大数做算术运算不能使用运算符,要使用相应的方法
		System.out.println(a.add(b));//加法
		System.out.println(a.subtract(b));//减法
		System.out.println(a.multiply(b));//乘法
		System.out.println(a.divide(b));//除法
		System.out.println(a.remainder(b));//求余数
		
		System.out.println(a.compareTo(b));//比较大小
		System.out.println(a.abs());//绝对值
		System.out.println(a.pow(3));//a的3次幂
	}

}

 

你可能感兴趣的:(Java,Java夯实基础)