字符和编码

1.string

可以直接使用 String s1 = "hello";

内容不可变 String s2 = new String("world");string类一旦创建内容不变。

(1)比较两个string的内容:

String s = "hello";

s.equals("Hello");  false

s.equalsIgnoreCase("Hello");   true,无视大小写

 

(2)是否包含子串

String s = "hello";

s.contains("ll");//true    是否包含ll

s.indexOf(“ll”);2,得到索引位置,没有找到返回值为-1

s.startWith("he");   true,开头的是否为he

s.endWith("lo");true,结尾是否是lo

(3)移除收尾空白字符

String s = "\t hello\r\n";

String s2 = s.trim()://"hello" trim()不改变字符串内容,而是改变新的字符串。

(4)提取子串

String s = "hello,world"

s.substring(7);//"world"

s.substring(1,5);//"ello"

不改变字符串,而是获得新的字符

(5)大小写的转换

String s = "heLLo";

s.toUpperCase();//"HELLO"

S.toLowerCase();//"hello"

(6)替换字符

String s = "hello";

s.replace('l','w');//"hewwo"   替换一个字符;

s.replace("l","w~");//替换一段字符

 replaceALL(String,String)正则表达式替换子串   没懂的红色标

String[]  split(String)  分割字符串

(7)拼接字符串

String[] arr = {"A","B","C"};

String s = String.join("~~",arr);//"A~~B~~C"

(8)把任意数据转换为String:

static String valueOf((int)123);//"123"

static String valueOf((boolean)true);"true"

String.valueOf(new Objiect());//"java.lang.Objiect@35131e422"

把字符串转换为整型 int i = Integer.pareInt("123");//123

Integer I= Integer.valueOf("123");  转化为一个对象

Integer I2 = Integer.getInteger("123");不是把字符串123变为整型,而是获得环境变量查找有没有123

(9)String转换为char[] :  char[] toCharArray()

String s = "hello";

char[] cs = s.toCharArray();{'h','e','l','l','o'}

String s2 = new String(cs);

(10)把String转换为bye[]

String s = "hello";

byte[] bs1 = s.getBytes("UTF-8");不推荐,因为winds编码是gbk,max和linux是utf-8

byte[] bs2 = s.getBytes(StandardCharsets.UF_8);

new String(bs1,"utf-8");

new String(bs2,StandarCharsets.UTF_8);

字符串和byte[]相互转换时要注意编码,建议总是用UTF-8

 

2.StringBuilder类,拼接,String能用+拼接但是每次循环会创建新的字符串对象,会浪费内存影响GC效率

String s = "";

for (int i = 0;i<1000;i++){

s = s+String.valueOf(i);

}

 

StringBuilder可以高效拼接字符串,是可变对象,可以预分配缓冲区。

StringBuilder sb = new StringBuilder(1024);

for (int i = 0;i<1000;i++){

sb.append(String.valueOf(i));

}

String s = sb.toString()//把布尔值转换为String

StringBuilder可以进行链式操作。

StringBuilder sb = new StringBuilder(1024);

String s = sb.append("mr  ")

.append(name)

.append("!")

.insert(0,"Hello, ")

.toString();

 

3.包装类型

java的数据类型:

基本类型:int,boolean,float。。

引用类型:所有class类型

如何把基本类型视为对象。

定义一个实例字段int

定义一个Integer类,包含一个实例字段int

public class Integer{

private int value;

public Integer(int value){

this.value = value

}

}

可以把Integer视为int的包装类型

int,Integer,String的相互转换

Integer n1 = new Integer(i);//把int变为integer

Integer n2 = Integer.valueOf(i)//把int或string变为integer

int x1 = n1.intValue();返回基本类型int

int x2 = Integer.parseInt("100");//把string转换为int

String s = n1.toString()//把integer变为string

Integer.getInteger(String)读取系统变量得到对应的值。

(2)自动装箱:Integer n = 99;

自动拆箱:int i = n;

装箱和拆箱会影响执行效率。

当Integer变为int,而为null时报错。

(3)整数和浮点数包装类型继承自Number,可以向下转型为byte,int,long,float,double

Number num = new Integer(999);

byte(byte,int,long,float,double) b = num.byte(byte,int,long,float,double)Value();

4.枚举类型

用enum关键字定义常量:

关键字enum定义常量类型

常量本身带有类型信息

使用 ==比较    if(day == Weekday.FRI)

public enum Weekday{

SUN,MON,TUE,WED,THU,FRI,SAT;

}

Enum定义的类型实际上是class,

继承自java.lang.Enum,

不能通过new创建实例

所有常量都是唯一实例,可以用switch语句

编译器编译出的class

public final class Colar extends Enum{

public static final Color RED = new Color();

}

name()获取常量定义的字符串,注意不要使用toString()

ordinal()获取定义的顺序

可以为enum类编写构造方法。字段和方法

构造方法声明为private

 

5.常用工具类

math

Math.random()生成一个随机数

double x1 = Math.random();

long MIN = 1000;

long MAX = 9000;

double x2 = Math.random()*(MAX - MIN) + MIN;

double r = (long) x2;

 

Random r = new Random();用来创建伪随机数

r.nextInt(10);生成下一个随机int,生成0-10之间的随机数,不包括10

伪随机数:给定种子后伪随机数会生成完全相同的序列

不给定种子时Random是用系统当前时间戳作为种子。

 

SecureRandom用来创建安全的随机数 缺点比较慢

SecureRandom sr = new SecureRandom();

for(int i = 0;i < 10;i++){

System.out.println(sr.nextInt(100));

}

BigInteger用任意多个int[]来表示非常大的整数

BigDecimal表示任意精度的浮点数

BigInteger和BigDecimal都继承自Number,可以和其他的基本类型转换。

 

6. javabean

许多class的定义都符合:

若干private实例字段

通过public方法读写实例字段

public class Person {

private String name;

private int age;

public String getName(){

return name;

}

public void setName(String name){

this.name = name;

}

符合这种class的敷方法叫javabean

把一组getter和setter称为属性(Property)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值