java、常用的类StringBuffer、math、和Calendar

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

一.java中API
 所谓API就是指说明书,上面写着所有的的功能和相关说明。在java中提到的API就是JDK中提供的各种功能的java类。

二。常用类之一(StringBuffer) 

1 什么是StringBuffer
  等待使用的String存放在StringBuffer中。

2 什么叫缓冲区
  等待使用的数据存放在缓冲区中。

3 StringBuffer的好处(与String的不同之处)
  String是不可变的,而StringBuffer是可变的!
  如果一个字符串需要在计算过程中不断的发生变化,能使用应该先使用StringBuffer,然后在从StringBuffer中把计算后的String提取出来。

4 StringBuffer与数组的不同之处
数组长度是不可变的,而StringBuffer长度是可变的;
数组只有存放一种数组类型,但可以向StringBuffer中添加任何类型的数据,但提取出来后就都变成字符串了。

StringBuffer实例:

public class StringBufferDemo{
	
	// 具体数字表
	final static char[] data = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌',
			'玖', '拾' };
	// 单位表
	final static char[] ch = { '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿' };

	public static void main(String[] args) {
		System.out.println(conut(347));
	}

	// 定义一个功能,返回值类型是什么呢?阿拉伯数字是什么类型,就返回什么类型(string),那传入的参数什么类型呢?,数字是int型
	public static String conut(int num) {
		int usm = 0;// 定义为常量,不能定义在循环里面,因为不然每次循环都会重新创建 的
		// 定义一个字符容器
		StringBuffer sb = new StringBuffer();// 注意不能定义在循环里
		while (num != 0) {
			// 指定位置添加字符,指定第一个位置添加,表中的字符,如果数比较大,单位怎么从左到右到左呢?指定的位置一直为0角标,那么每次都是第一个,这样就实现了从左到又读取
			sb.insert(0, ch[usm++]);
			// 如何获得整数的个数。可以采用取模,参数%10
			int bell = num % 10;// 定义一个变量接受取模后的余数
			// 取模后的数字,怎么对应阿拉伯数字呢?位置怎么排列呢?从左到右,一样每次指定0角标位置,添加取模后的数对应的角标
			sb.insert(0, data[bell]);
			num = num / 10;// 数字较大的话,进行取整,知道为0终止循环
		}
		return sb.toString();
	}

}

总结:1.表ch对应的是单位,让它每次进行递增这样就可以实现每次取模后的数字单位了,定义个变量进行自增,放在循环外
        2.如何将较大的数和表中的位置相对应!采用循环取模模10这样的方式,余数变量刚好对应表data,那较大的数如何取得呢?采用取整除10,这样刚好让它进行依次循环,循环到0,条件不成立终止循环

三、常用类之一(math)
 math类的特点:
  1.因为没有实例方法,所以就不需要创建本类实例;
  2.因为不需要实例,也就不需要有构造器;
  3.因为怕有默认构造器,所以需要有private构造器;
  4.这样的类好像也不需要有子类,所以Math是final类。
math类实例:

**
 * 需求:猜数字小游戏!数字范围0-100的整数.
 * 
 * */
public class StringTest {
	public static void main(String[] args) {
		System.out.println("请在下面输入数据:");
		//创建一个伪随机数
		Random r = new Random();
		//范围在1-100
		int a = r.nextInt(100);
		// 定义一个boolean变量作为标记
		boolean flag = false;
		//用户只能猜8次
		for (int i = 1; i < 8; i++) {
			//使用键盘录入的方式
			Scanner in = new Scanner(System.in);
			int b = in.nextInt();
			//如果录入的数字大于随机数
			if (b > a) {
				//打印相应的字符串和次数
				System.out.println("您输入的数据大了,请重新输入!" + "。" + "第" + i + "次输入");
			//如果数字小于随机数
			} else if (b < a) {
				//打印相应的字符串和次数
				System.out.println("您输入的数据小了,请重新输入!" + "。" + "第" + i + "次输入");
			//如果等于循环环结束
			} else if (b == a) {
				//标记为真
				flag = true;
				break;
			//如果已经猜了7次循环终止
			} else if (i == 8) {
				break;
			}
		}
		//如果标记为真,并且录入的数字和随机数相等,给出相应的字符串,否则给出答案和相应的字符串
		if (flag) {
			System.out.println("【聪明伶俐一百分!】:" + "正确答案为" + a);
		} else {
			System.out.println("【靠,你小子弱智啊!!】:" + "正确答案为" + a);
		}
	}
}

总结:通过键盘录入,判断录入的数字是否等于随机数,定义一个标记,如果随机数等于录入数,循环终止标记改为true,如果输入出国8次循环终止,但标记不变

四、常用类之一(Carlendar)

  Carlendar抽象类
1 获取Carlendar
  Carlendar c = Calendar.getInstance();
  getInstance()方法返回的是Carlendar子类的实例对象。
  Carlendar类只有一个子类:GregorianCarlendar。

2 GregorianCarlendar构造器
GregorianCarlendar():构造当前时间;
GregorianCarlendar(int year, int month, int day):指定年、月、日来构造时间;
GregorianCarlendar(int year, int month, int day, int hour, int minute):指定年、月、日、时、分来构造时间;
GregorianCarlendar(int year,int month,int day,int hour, int minute, int second):指定年、月、日、时、分、秒来构造时间。

3 Calendar的获取方法
  get(int field),获取属性。
获取年:get(Calendar.YEAR);
获取月:get(Calendar.MONTH),注意,如果当前月份是1,那么返回值为0;
获取日:get(Calendar.DATE);
获取星期:get(Calendar.DAY_OF_WEEK),注意,如果当前是星期日,那么返回值为1。
获取小时:get(Calendar.HOUR_OF_DAY)
获取分钟:get(Calendar.MINUTE)
获取秒钟:get(Calendar.SECOND)

3 Calendar的设置方法
  set(int field, int value)
设置年:set(Calendar.YEAR, 2050)
设置月:set(Calendar.MONTH, 11),设置月份为12月!!!
设置日:set(Calendar.DATE, 28)

4 Calendar的add方法
  add(int field, int value)
  这个方法用来相对当前时间来设置属性
设置年:add(Calendar.YEAR, 1),如果当前是2010年,那么这个方法就是把年份+1。
这个方法也可以用来相对设置其他属性,这里不在赘述!

5 与Date之间的转换
setDate(Date):使用Date对象设置当前Calendar对象
Date getDate():把当前对象转换成Date对象。

6 获取最大值方法

int getActualMaximum(int filed):获取指定字段的真实最大值。例如:c.getActualMaximum(Calendar.DATE),如果当前日历为2月,那么返回值为28。即2月的最大天数。

Calendar实例:

import java.util.Calendar;

public class StringDate {

	public static void main(String[] args) {
		System.out.println("日 一 二 三 四 五 六");
		Calendar cl = Calendar.getInstance();
		// 获取当日
		int today = cl.get(Calendar.DATE);
		// 设置当日1号
		cl.set(Calendar.DATE, 1);
		// 获取当前日期是星期几
		int w = cl.get(Calendar.DAY_OF_WEEK);
		// 打循环输出空格,i=星期日; i<当前日期是星期几
		for (int i = Calendar.SUNDAY; i < w; i++) {
			System.out.print("    ");
		}
		// 获取当前月一共多少天
		int maxday = cl.getActualMaximum(Calendar.DATE);
		// 知道了当前月一共多少天,就可以确定循环的次数
		for (int i = 0; i < maxday; i++) {
			int day = cl.get(Calendar.DATE);
			// 如果day<10,打印一个空格补位
			if (day < 10) {
				System.out.print(" ");
			}
			// 如果day==today,打印一个星号和一个空格,否则打印两个空格;
			System.out.print(day);
			if (day == today) {
				System.out.print("* ");
			} else {
				System.out.print("  ");
			}
			int week = cl.get(Calendar.DAY_OF_WEEK);
			if (week == Calendar.SATURDAY) {
				System.out.println();
			}
			// 让日期自增一天。
			cl.add(Calendar.DATE, 1);
		}
	}

}

总结:calendar类是一个抽象类,用newInstance方法创建其子类的的实例对象.设置当天日期回到1号,循环判断如果不为1,输出四个空格。然后进行判断当为6的时候换行,最后设置当天日期进行自增。

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

你可能感兴趣的:(Java学习总结)