史上最全讲解: JAVA中的常见类-字符串类,基本数据类型的包装类,日期Date类,枚举Enum类

史上最全讲解: JAVA中的常见类-字符串类,基本数据类型的包装类,日期Date类,枚举Enum类

字符串类

String类

  不可变长的字符序列,Java程序中所有的字符串字面值(“abc”)都作为此类的实例实现
  首先String被final修饰是不能被继承的,字符串是常量,在内存中可以共享 每次创建后不能更改。也就是说每次对String字符串进行改变操作实际上是创建一个新的String对象
String str = “abc”;等效于:
char data[] = {‘a’, ‘b’, ‘c’};
String str = new String(data);
  和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
  StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
  由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

StringBuilder类

1.是一个可变字符序列,有一个初始容量capacity,可以手动设置,JDK1.8中默认初始容量为16,当字符串的大小等于于原容量时,容量等于字符串长度+16

StringBuffer类

支持和StringBuilder所有相同的操作,不同的是StringBuffer是线程安全的,在声明的方法中使用synchronized关键字进行修饰,因此单线程中一般要比StringBuilder效率低

package com.shsxt.api;

import java.io.UnsupportedEncodingException;

public class StringDemo {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String str = "123456";
		String str1 = new String("789");
		byte[] bytes = "中国你好".getBytes();
		String str2 = new String(bytes,3,9);
		String str3 = new String(bytes,"gbk");
		System.out.println(str);
		System.out.println(str1);
		System.out.println(str2);
		System.out.println(str3);
	}
}

package com.shsxt.api;

public class StringBuilder02 {
	public static void main(String[] args) {
	StringBuilder sb = new StringBuilder("123");
	System.out.println(sb.append(false));
	}
}

基本数据类型的包装类

  • 基本数据类型的包装类:
  • byte ---- Byte
  • short — Short
  • int — Integer
  • long — Long
  • char — Character
  • float — Float
  • double — Double
  • boolean — Boolean
    转换:
  •  自动拆装箱:
    
  •  	**自动装箱: 从基本-->引用**
    
  •  	**自动拆箱: 从引用-->基本**
    
package com.shsxt.api;

public class Data03 {
   public static void main(String[] args) {
   	int i=1;
   	Integer in = 1;//自动装箱
   	int s = in;//自动拆箱
   	
   	Integer i1 = 127;
   	Integer i2 = 127;
   	Integer i3 = 128;
   	Integer i4 = 128;
   	System.out.println(i1 == i2);
   	System.err.println(i3 == i4);
   	
   	Integer i5 = new Integer(127);
   	Integer i6 = new Integer(127);
   	System.out.println(i5 == i6);
   	System.out.println(i1 == i5);
   	
   	int i7 = 127;
   	System.out.println(i7 == i5);
   	System.out.println(i7 == i1);
   	
   }
}

日期Date类

  • 分配并初始化该对象
    Date()分配date对象并初始化此对象,以表示分配它的时间,本地时间
    Date(long date)即1970年0时0分0秒GMT以来的毫秒数
  • SimpleDateFormat格式转换类
    1.format(Date)日期转换为字符串
    2.parse(String)字符串转换为日期
    构造器:
    SimpleDateFormat();默认的转化格式
    SimpleDateFormat(“定义转换格式”)
package com.shsxt.api;

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

public class DateFormat {
	public static void main(String[] args) throws ParseException {
		Date date = new Date();
		System.out.println(date);
		SimpleDateFormat simple = new SimpleDateFormat();
		System.out.println(simple.format(date));
		
		SimpleDateFormat simple2 = new SimpleDateFormat("yyyy/MM/dd/hh/mm/ss");
		System.out.println(simple2.format(new Date()));
		System.out.println(simple2.parse("2019/11/30/04/25/58"));
	}

}

枚举Enum类

列举出所有的可能情况

  • 注意:
    1.定义枚举类,使用关键字Enum,.
    2.枚举中的字段可以表示枚举中的实例,被public static final修饰
    3.所有的枚举类都隐式的继承自java.lang.enum
package com.shsxt.api;
/*
 * 定义一个员工类,分析员工类,要求有一个属性定义员工的工作状态,只能存在3中状态  busy  normal  free
 *活动:对busy状态的员工,发奖金100元,其他人扣钱100元
 */
public class EnumDemo05 {
	public static void main(String[] args) {
		Person p1 = new Person("张三",Situration.busy);
		Person p2 = new Person("李四",Situration.free);
		Person p3 = new Person("王五",Situration.normal);
		Person[] array = {p1, p2,p3};

		for(int i=0;i<array.length;i++){
			switch (array[i].getS()){
			case busy:
				System.out.println(array[i].getName()+"100");
				break;
			case normal:
				System.out.println(array[i].getName()+"-100");
				break;
			case free:
				System.out.println(array[i].getName()+"-100");
			
			}
		}
	
	}
	
}

enum Situration {
	busy,normal,free;
	private String name;
	public void setName(String name){
		this.name = name;
	}
	
	public String getName(){
		return this.name;
	}
}

class Person{
	private String name;
	Situration s;//员工的状态
	public Person(String name, Situration s) {
		super();
		this.name = name;
		this.s = s;
	}
	public Person() {
		super();
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Situration getS() {
		return s;
	}
	public void setS(Situration s) {
		this.s = s;
	}
	
	
	
	
	
}
	

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值