JavaSE之三个特殊类

1、java.lang.String类

1.1、String类的两种实例化方式

a、直接赋值
b、传统方法(构造方法实例化)

1.2字符串子相等比较

public boolean equals(String anotherString) :成员方法
str1.equals(anotherString)

1.3字符串常量(“ ”)是String的匿名对象

小tips:在以后开发中,如果要判断用户输入的字符串是否等同于特定字符串,一定要把特定字符串(String常量)卸载前面,避免NullPointerException(空指针异常)

1.4.对象池

JVM底层回自动维护一个字符串的对象池,如果现在采用直接赋值大的形式进行String的对象实例化,该对象会自动保存在这个对象池中。如果下次继续使用直接赋值的模式声明String对象,此时对象池中若有指定内容,则直接饮用;如果没有,则开辟新的堆空间后将其保存在对象池中供下次饮用。

手工入池:(本地方法)

public nitive String intern( );

1.5字符串常量不可变更

字符串一旦定义后不可改变。

1.6字符与字符串的相互转换**

a、将字符数组转为字符串

public String ( char[ ] value ) public String ( char[ ] value , int
offset, int count )

b、将字符串转为单个字符

public char charAt=(int index )

c、将字符串变为字符数组

String ->char[] public char[] ttoCharArraay();

d、取得字符串长度:

public int length();

1.7字节(byte)与字符串

a、将字节数组转为字符串**
byte[ ] -> String

public String ( byte[ ] value ) public String ( byte[ ] value , int
offset, int count )

b、将字符串转为字节数组**
String -> byte[]

public byte[] getBytes;

c、将字符串按照指定编码转为字节数组
public byte[] getBytes(String charsetName)

1.8字符串比较

a、不区分大小写相等比较

public boolean equalsIgnoreeCase(String anotherString)

b、比较两个字符串大小

public int compareTo(String anotherString)

I.返回大于0:表示大于比较对象
II.返回等于0:两者相等
III.返回小于0:表示小于比较对象

1.9字符串查找

  • public boolean contains(String str):判断str在本字符串中上是否存
  • public boolean startsWith(String str):判断是否以指定字符串开头
  • public boolean startsWith(String str,int index): 从指定位置开始判断是否以指定字符串开头
  • public boolean endsWith(String str):判断是否以指定字符串结尾

1.10字符串替换

  • public String replaceAll(String regex, String replacement):替换所有指定内容
  • public String replaceFirst(String regex, String replacement):替换首个内容

1.11字符串拆分

  • public String[] split(String regex) :将字符串按照指定格式全部拆分 public Sring[]
  • split(String regex, int limit) :将字符串部分拆分,数组长度为limit

1.12字符串截取

  • public String substring(int beginIndex): 从指定位置截取到字符串结
  • public Stringsubstring(int beginIndex, int endIndex): 截取部分内容

1.13String类的其他方法

a、去掉左右空格:public String trim( );

b、转大小写
转大写:public String toUpperCase( );
转小写:public String toLowerCase( );

c.判断字符串是否为空(只能判断是否为空字符串二不是null)
public boolean isEmpty( );

1.14两只sb

--------方便进行字符串的修改–java.long包之下(自动导入)

StringBuffer
StringBuilder

I、String的内容不可修改,二两只sb可以修改内容(append)
II、
(1)StringBuffer采用同步处理,线程安全,效率较低。
(2)StringBuilder采用异步处理,线程不安全,效率较高,String"+"底层会将String->StringBuilder

1.14.1.字符串修改

public StringBuffer append(各种数据类型)

1.14.2.StringBuffer <–> String

I、String–>StringBuffer
调用StringBuffer的构造方法或append()

II、StringBuffer–>String
StringBuffer.toString();

1.14.3.字符串反转

pubilc StringBuffer reverse();

1.14.4.删除指定范围的数据

public StringBuffer delete(int start, int end);

1.14.5.插入数据

public StringBuffer insert(int offset, 各种数据类型); offset:指定开始位置

2.Object类(RealFather)

Object是java默认提供的类。

java除了Object类,所有的类都存在继承关系,默认会继承Object父类,所有类对象都可以通过Object类进行接收。

2.1取得对象信息–toString()

直接使用对象输出,默认输出一个地址编码。如果现在输出的是String对象,此时输出字符串内容而非地址,原因就在于String类覆写了object的toString()方法。

System.out.println();

系统谁输出默认会调用对象的toString()

如果默认给出的toStrring()功能不足(不想输出地址而是输出本类信息),需要在子类中覆写toString()方法。

2.2对象的比较–equals()

2.3接收引用数据类型

Object可以接收所有引用类型,包括:类、数组、接口。

3.包装类

包装类就是将基本数据类型封装到类中

3.1分类

a、对象型包装类(Object的直接子类):Boolean(boolean)、Character(char)
b、数值型包装类(Number的直接子类),存在数值转换异常:Byte(byte)、Short(short)、Long(long)、Double(double)、Float(float)、Integer(int)

3.2装箱与拆箱–基本数据类型与相应包装类的数据处理

装箱:将基本数据类型变为包装类对象,利用每个包装类提供的构造方法实现装箱。
拆箱:将包装类中的包装的基本数据类型值取出,利用Number类提供的xxValue( )实现拆箱处理。

阿里编码规范:所有相同类型的包装类对象之间的值的比较,全部使用equals()方法比较。

说明:
对于Interger var = ? 在-128~127之间的赋值,Interger对象在Interger常量池中产生,会复用已有对象,这个区间内的Interger值可以直接使用==判断。除此之外的所有数据,都会在堆上产生,并不会复用已有对象。

使用int还是Interger?
a、【强制】所有的POJO类(简单java类,Bean)属性必须使用包装类型;
b、【强制】RPC方法的返回值和参数必须使用包装类型;
c、【推荐】所有的局部变量使用基本类型。

3.3字符串与基本类型的转换

I、将字符串转为基本类型
调用各个包装类 . parseXX(String str)

Integer . parseInt(String str);

II、基本类型转为字符型
a、“”+基本类型
b、使用String类的valueof(基本类型,静态方法),此方法不产生垃圾空间。

3.4包装的定义与使用(文件夹)

包的本质实际上就是文件夹。

打包编译命令:

javac -d . 类名.java
-d : 表示生成目录,根据package的定义生成; . :表示在当前所在目录生成子目录。

3.5包的导入:

import

自动匹配编译顺序:(在当前目录下按照主类的使用情况自动编译)

javac -d . ./*.java

3.6系统的常用包

  • java.long :系统的常用基础类(String、Object、包装类),JDK1.1之后导入
  • java.util:Java提供的工具程序包(集合类,ArrayList 、HashMap),需要手工导入
  • juc:java.util.concorrent:并发程序包

3.7访问控制权限

private < default(包访问权限) < protected(继承访问权限) < public

猜你喜欢

转载自blog.csdn.net/qq_40933663/article/details/83579033