Lesson_for_java_day13--java的常用类—StringBuffer、基本数据类型包装类、Date、Calender、Math、Runtime、System等

一、StringBuffer:

-------------------------StringBuffer、StringBuilder-----------------------------

StringBuffer是字符串缓冲区。
	特点:
		1、是一个容器。而且长度是可变化的。
		2、可以操作多个数据类型。
		3、最终会通过toString方法变成字符串。

CURD:增删改查
	即:create,update,read,delete

1、存储:
	StringBuffer append(); 将指定数据作为参数添加到已有数据结尾处。
	StringBuffer insert(int index,数据); 可以将数据插入到指定的index位置。
	
2、删除:
	StringBuffer delete(int start,int end); 删除缓冲区中的数据,包含start,不包含end。
	StringBuffer deleteCharAt(int index); 删除指定位置的字符。
	
3、获取:
	Char charAt(int index);
	int indexOf(String str);
	int lastIndexOf(String str);
	int length();
	String substring(int start,int end);  包含start,不包含end
	
4、修改:
	StringBuffer replace(int start,int end,String str);  包含start,不包含end
	setCharAt(int index,char ch);

5、反转:
	StringBuffer reverse();
    
6、将缓冲区中指定数据存储到指定数组中:
	void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);
	
在JDK1.5版本之后出现了StringBuilder。功能与StringBuffer相同。
	StringBuffer是线程同步。线程是安全的,但是每次都需要访问锁,效率较低。
	StringBuilder是线程不同步。线程是不安全的,不需要访问锁,效率高。用于多线程不安全。
	所以如果需要多线程同步,建议使用StringBuffer,而不需要同步的使用StringBuilder。
	
	以后开发,建议使用StringBuilder。


Java升级的三个因素:
	1、提高效率;
	2、简化书写;
	3、提高安全性。
代码:

public class TestStringBuffer {

	public static void main(String[] args) {
		String s = "123456789";
		StringBuffer sb1 = new StringBuffer(s);
		StringBuffer sb2 = new StringBuffer();
		
		System.out.println(sb2);
		sb2.append("Good morning,I am studying java.");//尾部追加
		System.out.println(sb2);
		sb2.insert(sb2.indexOf("I am"), "everyone.");//指定位置插入字符串
		System.out.println(sb2);
		
		int start = sb2.indexOf("everyone");
		int end = start + "everyone".length();
		sb2.replace(start, end, "everybody");
		System.out.println(sb2);
		
		System.out.println("sb1:" + sb1);
		sb1.reverse();
		System.out.println("sb1 逆序:" + sb1);
	}
}


二、基本数据类型包装类:

---------------------------基本数据类型对象包装类----------------------------------

基本数据类型	引用数据类型
	byte			Byte
	int				Integer
	short			Short
	long			Long
	boolean			Boolean
	float			Float
	double			Double
	char			Character

基本数据类型对象包装类的最常见作用:
	用于基本数据类型和字符串类型之间做转换。

基本数据类型转换成字符串:
	基本数据类型 + "";
	基本数据类型.toString(基本数据类型值);  
		eg:Integer.toString(34);  //将34整数变成"34";
		
字符串转换成基本数据类型:
	第一种方法:(静态调用方式)
		xxx是基本数据类型;
			xxx a = Xxx.parseXxx(String);
			eg:Integer.parseInt("123");
				//将字符串"123"变成整数123;必须传入数字类型的字符串,否则出现异常
			eg:Long.parseLong("123");
		boolean b = Boolean.parseBoolean("true");
	第二种方法:(非静态,对象调用方式)
		Integer i = new Integer("123");
		int num = i.intValue();
		
十进制转成其他进制:
	toBinaryString();
	toHexString();
	toOctalString();
	
其他进制转成十进制:
	parseInt(String,radix);
		eg:radix进行等级,如2,8,10,16

代码:


public class Test {
	public static void main(String[] args) {
		String s = "100";
		byte b1 = 120;
		Byte b2 = b1;  
		Byte b3 = new Byte(b1);
		
		byte b4 = b3.parseByte(s);  //字符串转成字节
		String s1 = b3.toString(); 
		
		byte a = 3;
		Byte b = new Byte(a);//byte-> Byte封装类
		a = Byte.valueOf(b);//Byte封装类 -> byte 基本类型
	
	    int i1 = Integer.parseInt(s);
	    
	    float f = Float.parseFloat(s);
	    
	    double d = Double.parseDouble(s);
	    
	    boolean bo1 = Boolean.parseBoolean(s);
	    
	    System.out.println(bo1);//false
	    
	    boolean bo2 = Boolean.parseBoolean("true");
	    
	    System.out.println(bo2);//true
	}
}
三、date

package otherClass;

import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {

	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(date);//打印的时间看不懂,希望有格式
		//将模式封装到SimpleDateFormat对象中
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  E hh:mm:ss");
		//调用format方法让模式格式化指定Date对象
		String time = sdf.format(date);
		System.out.println("time = " + time);
	}
}
四、Calender

package otherClass;

import java.text.SimpleDateFormat;
import java.time.Year;
import java.util.Calendar;
import java.util.Date;

public class CalendarDemo {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		sop(calendar);
		sop(calendar.get(Calendar.YEAR) + "年" + (calendar.get(Calendar.MONTH)+1) + "月" 
				+ calendar.get(Calendar.DAY_OF_MONTH) + "日   "
				+ "星期" + calendar.get(Calendar.DAY_OF_WEEK));
		
		String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		int index = calendar.get(Calendar.DAY_OF_WEEK);
		sop(weeks[index]);
		/*
		Date date = new Date();
		SimpleDateFormat sdf =  new SimpleDateFormat("yyyy");
		String year = sdf.format(date);
		System.out.println(year);
		*/
	}
	public static void sop(Object o) {
		System.out.println(o);
	}
}
package otherClass;

import java.util.Calendar;
/*
 * 课后练习:
 * 		1、获取任意年的二月份有多少天
 * 			思路:
 * 				根据指定年设置一个时间就是:c.set(year,2,1)//某年的3月1日
 * 				c.add(Calender.DAY-OF_MONTH,-1)//3月1日往前推一天,就是2月的最后一天
 * 		2、获取昨天的现在这个时刻。
 * 			c.add(Calendar.DAY_OF_MONTH,-1);
 */
public class CalendarDemo2 {

	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(2012,3,20);
		printCalendar(calendar);
		calendar.add(Calendar.MONTH, 3);
		printCalendar(calendar);//对时间量的偏移	
	}
	
	public static void printCalendar(Calendar c){
		sop(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH)+1) + "月" 
				+ c.get(Calendar.DAY_OF_MONTH) + "日   "
				+ "星期" + c.get(Calendar.DAY_OF_WEEK));
		String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		int index = c.get(Calendar.DAY_OF_WEEK);
		sop(weeks[index]);
	}
	public static void sop(Object o) {
		System.out.println(o);
	}
}
五、Math

package otherClass;

import java.util.Random;
/*
 * 课后练习:
 * 		给定一个小数,保留该小数的后两位
 */
public class MathDemo {
	public static void main(String[] args) {
		Random random = new Random();
		
		for(int x = 0; x < 10; x++){
			//int d = (int)(Math.random()*10 + 1);
			int d = random.nextInt(10+1);
			sop(d);
		}

	}
	
	public static void show(){
		double d = Math.ceil(16.34);//返回大于指定数据的最小整数。
		double d1 = Math.ceil(-16.54);
		sop(d);
		sop(d1);
		
		double d2 = Math.floor(16.34);//返回小于指定数据的最小整数。
		double d3 = Math.floor(-16.54);
		sop(d2);
		sop(d3);
		
		double d4 = Math.round(16.54);//四舍五入。
		double d5 = Math.round(-16.34);
		sop(d4);
		sop(d5);
		
		double d6 = Math.pow(2,3);//幂运算2的3次方。
		double d7 = Math.pow(3,3);
		sop(d6);
		sop(d7);
	}
	public static void sop(Object o){
		System.out.println(o);
	}
}

六、Runtime

package otherClass;
/*
	Runtime对象:
		该类并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的。
		但是发现该类中还有非静态方法。说明该类肯定会提供方法获取本类对象。而且该方法是
			静态的。并返回值类型是本类类型。(单例设计模式)
		该方法是static getRuntime();
		有这个特点可以看出该类使用了单例设计模式完成。
 */
public class RuntimeDemo {

	public static void main(String[] args) throws Exception{//会产生异常
		Runtime r = Runtime.getRuntime();
		Process p = r.exec("D:\\Program Files (x86)\\Tencent\\QQ\\QQProtect\\Bin\\QQProtect.exe");//返回一个子进程
		Thread.sleep(400);
		p.destroy();//结束子线程
	}
}

七、System

package otherClass;

import java.util.Properties;

/*
	System:类中的方法和属性都是静态的。
		out:标准输出,默认是控制台
		in:标准输入,默认是键盘
		
		描述系统一些信息:
			获取系统属性信息:Properties gerProperties();
 */
public class SysteDemo {
	public static void main(String[] args) {
		
		Properties prop = System.getProperties();
		//因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。
		//那么可以通过map的方法取出该集合中的元素。
		//该集合中存储都是字符串,没有泛型定义
			
		//如何在系统中自定义一些特有的信息呢?
		System.setProperty("mykey","myvalue");
		
		//获取指定属性信息
		String value = System.getProperty("os.name");
		System.out.println("value = " + value);
		
		//可不可以在虚拟机启动时动态的加载一些属性信息
		String v = System.getProperty("haha");
		System.out.println("v = " + v);
	
		/*获取所有属性信息
		for(Object obj : prop.keySet()){
			String value = (String)prop.get(obj);
			System.out.println(obj + "::" + value);
		}
		*/
	}
}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值