1.String类
String类是不可变的,String对象申明后不可修改。
String s1 = "a";
String s2 ="b";
s1= s1+s2;
"a","b" ,都是存在字符串常量区。在运行过程中对字符串相加减会放在堆中。再看字符串常量池中是否存在改字符串,
若存在,返回该字符串的内存地址,若不存在先将字符串放在字符串常量池中,再返回内存地址。
String s1= new String("abc");和String s2 ="abc";
s1在堆中创建了一个对象,该对象存放的是"abc"在字符串常量区的内存地址。一共new了两个对象
s2直接指向字符串"abc"在常量区的内存地址。 new了一个对象。
String常用方法:
endsWith: 判断字符串是否以指定的后缀结束。
startsWith:判断字符串是否以指定前缀开始。
equals: 字符串相等比较。
equalsIgnoreCase,字符串相等比较,忽略大小写。
indexOf,取得指定字符串在字符串中第一次出现的位置。
lastIndexOf:取得指定字符串在字符串中的最后一次出现的位置。
length:获取字符串的长度。
replaceAll:替换字符串中指定的内容。
split:根据指定的表达式拆分你字符串。
subString:截取字符串。
trim:去除前后空格。
valueOf:将其他类型转换成字符串。
public class StringTest { public static void main(String[] args) { String s1 ="abcdb"; //判断字符串是否以指定字符串结束。 System.out.println(s1.endsWith("b"));//true //判断字符串是否以指定字符串开始。 System.out.println(s1.startsWith("a"));//true //比较字符串是否相等 System.out.println(s1.equals("av"));//false //比较字符串是否相等,忽略大小写 System.out.println(s1.equalsIgnoreCase("abcdB"));//true //取得指定字符串在字符串中第一次出现的位置。 System.out.println(s1.indexOf("a"));//0 //取得指定字符串在字符串中的最后一次出现的位置。 System.out.println(s1.lastIndexOf("b"));//4 //获取字符串的长度 System.out.println(s1.length());//5 //replaceAll:替换字符串中指定的内容。 System.out.println(s1.replaceAll("b","z"));//azcdz //split:根据指定的表达式拆分你字符串。 String s2 ="my name is zhangsan"; String[] s = s2.split(" ");//根据空格把字符串拆分成单词存放在一个字符串数组中 //subString:截取字符串。 System.out.println(s1.substring(1,2));//b。截取区间前闭后开 //trim:去除前后空格 String s3=" zhangsan " ; System.out.println(s3.trim());//zhangsan //valueOf,将其他类型转换成字符串 String s4 =String.valueOf(123465);//将int类型123465转换成字符串"123456"。 } }
2.StringBuiler和StringBuffer
StringBuffer称为字符串缓冲区,它的工作原理是先开辟一块内存空间,存放字符序列,如果字符序列满了
,会从新改变字符串缓冲区大小,以容纳更长的字符串。它和String最大的区别是它是可变对象。
append()字符串追加方法。
StringBuiler和StringBuffer用法相同,StringBuiler中的方法都是同步方法。是线程安全的。效率较低。
public class StringBufferTest { public static void main(String[] args) { //创建一个字符串缓冲区 StringBuffer sb = new StringBuffer(); for(int i = 0; i <100;i++){ //追加字符串 sb.append(i); sb.append(","); } //去除最后的,。 System.out.println(sb.substring(0,sb.length()-1)); } }
3.基本数据类型对应的包装类
基本类型的包装类主要提供了更多的实用操作,这样更容易处理基本类型。所有的包装类都是
final 的,所以不能创建其子类,包装类都是不可变对象。
8种基本数据类型对应的包装类型
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
4.日期类
常用日期类
java.util.Date,
java.util.SimpleDateFromat
public class DateTest { public static void main(String[] args) { //获取系统当前日期 Date now = new Date(); //格式化日期格式 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String nowStr = sdf1.format(now); System.out.println(nowStr); //将字符串转换成日期格式 String date ="1937-10-1 08:00:00 000"; try { Date date1 = sdf1.parse(date); System.out.println(date1); } catch (ParseException e) { e.printStackTrace(); } } }
5.数字类:
java.text.DecimalFormat
java.math.BigDecimal
public class DecimalFormatTest { public static void main(String[] args) { //格式化数字格式,加入千分位,保留4位小数 DecimalFormat df1 = new DecimalFormat("###,###.####"); String numStr = df1.format(155646561654.156); System.out.println(numStr); //格式化数字格式,加入千分位,保留4位小数,不够补零。 System.out.println(new DecimalFormat("###,###.0000").format(152.16)); } }
public class BigDecimalTest { public static void main(String[] args) { BigDecimal v1 =new BigDecimal(123); BigDecimal v2 =new BigDecimal(1225); BigDecimal add = v1.add(v2); //相加运算 System.out.println(add); } }
6.Random
java.util.Rondom可以产生随机数。
public class RandomTest { public static void main(String[] args) { //创建一个新的随机数生成器。 Random random = new Random(); //返回下一个伪随机数,从这个随机数发生器的序列中均匀分布 int值。 System.out.println(random.nextInt(100)); } }
7.枚举
使用enum可以圈定一个范围
如果只有几种可能存在的值,那么可以就被定义为枚举,是因为可以将可能存在的值一枚一枚的列举出来。
public class EnumTest { public static void main(String[] args) throws Exception{ Result r = method1(10, 2); if (r == Result.SUCCESS) { System.out.println("成功!"); } if (r == Result.FAILURE) { System.out.println("失败!"); } } //正确返回 SUCCESS,失败返回:FAILURE private static Result method1(int value1, int value2) { try { int v = value1/value2; return Result.SUCCESS; }catch(Exception e) { return Result.FAILURE; } } } enum Result { SUCCESS, FAILURE }