常见类:

一.Object类:Object是类层次结构的分类;Object类是每个类的超类.

Object常见的成员方法:

A.public int hashCode():返回的是该对象的哈希码值,哈希码值是通过哈希码表(Hashtable)里面的哈希算法算出来的,可以理解为地址值.

B.public final Class<?> getClass():返回的是Object正在运行的类;

C.public String getName():以String的形式返回此class对象所表示的实体(类,接口,数组类,基本类型或void)名称

补充:getClass()是Object中的方法,getName()是Class类中的方法;

D.toString():返回的是该对象的字符串表示,通常,toString()方法会返回一个”以文本方式表示”此对象的字符串;Eclipce的快捷键重写toString()方法  shift+Alt+s再按s

E.public static String toHexString(int i):以16进制无符号整数形式返回一个整数参数的字符串表示形式

当没有重写toString()方法时:

s.toString()相当于s.getClass().getName()+”@”+(该方法所在的类名.toHexString(int i))

创建对象,直接输出对象名时,输出的是s.getClass().getName()+”@”+(该方法所在的类名.toHexString(int i))

toString()的源码:

public String toString() {
   return getClass().getName() + "@" +Integer.toHexString(hashCode()) ;
    }

getClass()返回的当前正在运行的类:Student类

getName():返回的是全路径名称,是以String字符串形式显示来,org.westos_02.Student

@:地址标记

当类中重写了toString()方法时:

创建对象,直接输出对象名,输出按toString()方法所示输出.

例如:有类Student继承了Object;若在Student类中重写了toString()方法,输出的按toString()格式输出,若没有重写toString()方法,则输出s.getClass().getName()+”@”+(该方法所在的类名.toHexString(int i))

代码如下:

java string mybaitis插入blob java string object_指定位置

 

java string mybaitis插入blob java string object_字符串_02

运行结果:

 

java string mybaitis插入blob java string object_指定位置_03

拓展:

Integer.toHexString(hashCode():返回一个整数的16进制数据

Integer类:是int型的一个包装类类型

Character类:是char类型的一个包装类类型;

F.public boolean equals(object obj):表示其他的某个对象是否与此对象相等;默认判断地址值;

Object中的源码:

public boolean equals(Object obj) {
        return (this == obj);
}

若要比较两个对象是否相等,看两个对象中的内容是否相等,就需要重写equal()方法;

补充:obj instanceof Student:表示的是该obj对象是否是Student的实例化(考点!):instanceof

G.protected void finalize():当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法.什么时候调用这个方法不确定,要看GC垃圾回收器这个线程什么时候空闲!(System类)

H.protected Object clone():创建并返回此对象的一个副本,返回的是Object类型;

注意:Object类中的clone方法执行特定的复制操作;若要复制的对象不能实现接口Cloneable,则会抛出CloneNotSupportException.

哪个方法执行复制操作,哪个方法抛出CloneNotSupportException.方法所在的类实现Cloneable接口.

例如:类Student重写了clone()方法,所以类Student就要实现Cloneable接口,重写的clone()方法和测试类的主方法就要抛出CloneNotSupportException.

代码如下:

 

java string mybaitis插入blob java string object_字符串_04

java string mybaitis插入blob java string object_字符串转换_05

运行结果:

 

java string mybaitis插入blob java string object_字符串转换_06

 

  1. String类:
    String类代表字符串,JAVA中所有字符串面值;
    字符串是常量,一旦被赋值,其值不能被更改;
    方法区:字符串常量池
    如果我们创建一个字符串对象,给对象进行赋值,这个值在常量池中找,有的话就返回,没有就在常量池开辟空间.
    String类中常用的构造:
    public String():无参构造;
    public String(byte[] bytes):将字节数组转换为字符串;
    public String(byte[] bytes,int offest,int length):将字节数组的一部分转换为字符串;
    public String(char[] value):将字符数组转换为字符串;
    public String(char[] value,int offest,int count):将字符数组的一部分转换为字符串;
    public String(String original):将一个常量转换为字符串:由于String类型是不可变的,所以无需使用此构造方法;
    补充:数组中有没有length()?字符串中有没有length()?
    length:是数组的长度属性;数组中没有这个方法;
    字符串中有length()方法,返回字符串长度;`
    为了更好地理解String的构造方法,引出以下例子帮助理解:
    代码如下:

java string mybaitis插入blob java string object_字符串转换_07

运行结果:

 

java string mybaitis插入blob java string object_字符串_08

面试题:

String s1=new String(“hello”);创建了几个对象;

String s2=”hello”;创建了几个对象;

答案:s1创建了两个对象,s2创建了一个对象,hello是在常量池中找到的;

拓展:System.out.println(s1==s2);//false

        System.out.println(s1.equals(s2));//true

==比较的是地址值;

equals默认比较的也是地址值,String重写了Object中的toString()方法,比较的是内容;

以下代码可以更好地理解==与equals的区别:

代码如下:

 

java string mybaitis插入blob java string object_指定位置_09

运行结果:

 

java string mybaitis插入blob java string object_指定位置_10

当字符串进行相加时:

如果是字符串变量相加:先开辟空间,后相加;

如果是字符串常量相加:先相加,然后在常量池中找,是否有这个值,有就直接返回地址值,没有就创建

例如:有String类型变量,s1,s2,s3;展示了变量相加和常量相加的不同点:

代码如下:

 

java string mybaitis插入blob java string object_指定位置_11

运行结果:

 

java string mybaitis插入blob java string object_字符串_12

String类常用的成员方法:

String类的常用的判断功能:

 boolean equals(Object obj):将此字符串与指定的对象比较

boolean equalsIgnoreCase(String str):将此字符串和另一个字符串进行比较,忽略大小写

boolean contains(String str):判断此字符串中是否包含str这个子字符串

boolean startsWith(String str):判断是否以str子字符串开头

boolean endsWith(String str):判断是否已str字符串结尾

boolean isEmpty():判断字符串是否为空

注意:

String s = "" ;表示s字符串是空字符串

String s = null ;空对象,连对象都没有.

String类的获取功能:

 int length():获取字符串的长度

char charAt(int index):返回指定索引处的字符!(重点)//遍历字符串用

int indexOf(int ch):返回回指定字符在此字符串中第一次出现处的索引(重点)

为什么这里的参数是int类型,而不是char类型

'a'和97都代表'a'

int indexOf(String str):返回指定字符串在此字符串第一次出现的索引!

int indexOf(int ch,int fromIndex):返回此字符中从指定位置开始后第一次出现的索引

int indexOf(String str,int fromIndex):返回此字符串中从指定位置开始后第一次出现的索引

(重点)

String substring(int start):截取:从指定位置开始截取,默认截取到末尾:包含start这个索引

String substring(int start,int end):从指定位置开始截取到指定位置结束:包左(start这个索引),不包含end这个位置

需求:键盘录入一个字符串,求这个字符串中大写字符,小写字符,数字字符一共有多少个?

分析: 1)定义三个统计变量;

利用循环和length()以及charAt()相结合,遍历字符串;

  1. 判断每一个字符属于哪一种字符:
    问题:如何判断:
  2. 利用ACSII码表:‘A’----65‘a’-----97‘0’-----48b.’a’<=charAt(x)&&charAt(x)<=’z’统计小写字符变量++;   ’A’<=charAt(x)&&charAt(x)<=’Z’统计大写字符变量++;   ’0’<=charAt(x)&&charAt(x)<=’9’统计数字字符变量++;
  3. 代码如下:

java string mybaitis插入blob java string object_字符串_13

运行结果:

java string mybaitis插入blob java string object_字符串_14



字符串的转换功能:(重点)
 byte[] getBytes():将一个字符串转换字节数组
char[] toCharArray():(重点方法):将一个字符串转换成字符数组
static String valueOf(char[] chs):将字符数组转换成字符串
static String valueOf(int i):将int类型的数据转换字符串
注意:
String类中的valueOf方法可以将任何数据类型转换成String
String toLowerCase():将字符串转换成小写
String toUpperCase():将字符串转换成大写
String concat(String str):字符串拼接功能
需求:键盘录入一个字符串,把这个字符串的首字母转成大写,其余为小写;
分析: 1)截取第一个字符并转成大写

  1. 截取其余的转成小写
  2. 利用concat()进行拼接

代码如下: 

java string mybaitis插入blob java string object_字符串_15

  1. 运行结果:

java string mybaitis插入blob java string object_字符串转换_16