java编程自学记录(day10)

Object类
 1)是所有的类的父类,我们定义的类都直接或间接的继承自Object
 2)若我们定义的类不适用extends去显式的继承它,在编译的过程中也会自动被加入。强制继承
 自Object。
toString()
 1)为什么有toString方法
  因为所有的类都继承自Object,而toString()方法是Object定义的。我们直接继承了这个
 方法。
 2)Object的toString()方法帮我们返回一个字符串,这个字符串的格式是固定的:
 类名@hashcode,hashcode是一串数字,在java中叫句柄。也可以叫地址。但是这个地址不是实际
 地址,是虚拟的,java中的实际地址对我们是不可见的,通过操作这个虚拟地址,java再对应到实际内
 存中,这样的机制避免了出现类似C语言的内存泄漏的问题。
 3)Object的toString()方法是让我们重写它,其原意是返回能够描述当前这个类的实例的一串文字
 ,默认的返回hashcode,对我们没有意义所以需要我们自己重写。
equals()
 1)方法的原意是比较对象与给定对象内容是都一致。需要我们重写
 2)在Object中的实现:
  public boolean equals(Object obj){
   return (this == obj);
  }
 3)equals和==的区别
  ==比较是否为同一个对象
  equals比较两个对象内容是否一样
 4)equals方法重写注意事项
  a.如果equals方法中有大量的比较逻辑,可以在开头先判断二者是不是同一个对象,这样可以
  节省性能开销。如果判断很少,这句话就没必要写了。
  b.equals比较前要进行安全验证,确保给定的对象不是null,obj若是null,会出现
  NullPointerExceptin【空指针异常】
  c.equals比较前要判断被比较对象与比较对象是否数以同一个类,如果不是同一个类,会引发
  ClassCastException【类造型异常】

String类
 1)java.lang.String用于封装字符串序列
 2)java字符串在内存中采用Unicode编码方式,任何一个字符对应两个字节的定长编码。
 3)String类属于不可变类,即String类一经创建之后,其封装的字符串是不能改变的
 4)在设计之初,虚拟机就对它做了特殊的优化,将字符串保存在虚拟机内部的字符串常量池中。
 一旦我们要创建一个字符串,虚拟机会先去常量池中检查是否创建过这个字符串,若有则直接引用。
 若没有就在字符串常量池中添加,这就造成可能有多个引用指向同一个字符串,所以就要保证该对象的内
 容自创建开始就不能改变!所以对字符串的任何变化都会创建新对象。而已创建的对象是不能改变的,当
 然如果没有被用到,会被回收掉。
equals()
 1)String类已经重写了Object的equanls方法,用于比较字符串内容是都一致。
 2)字符串之间最好不要使用==来比较,因为虽然String满足4)中的特性,但是可以使用new方法强
 制重新创建一个新的内容一样的字符串对象,这时两个地址不一样,==就得不到准确的效果。
equalsIgnoreCase()
 1)String自己实现的一个比较方法。可以忽略字符串大小写问题
  常用环境:上网注册时,输入的 验证码。
trim()
 1)返回字符串去除了前导和后导空白,包括空格、tab、回车、换行等
boolean startWith()
 1)判断字符串是否以某字符串为开头
 2)忽略大小写的判断方式:将比较和被比较全部转化为大写或者小写
 if(s8.toLowerCase().startsWith("hello".toLowerCase()))
 3)有两个重载方法
boolean endWith()
 1)判断字符串是否以某字符串为结尾
int length()
 1)返回字符串长度
int indexOf(str)
 1)在字符串中检索另一个字符串的位置,位置为0开始。
 2)如果不包含,则返回 -1
 3)只会从左到右找第一次出现目标字符串的位置
int indexOf(String str, int from)
 1)返回从from位置开始后第一次出现str的位置
 2)查找Think in Java中第二次出现i的位置
 s9.indexOf("i",s9.indexOf("i")+"i".length())
int lastIndexOf(str)
 1)查找最后出现的位置,返回的位置还是正常的位置。
int lastIndexOf(str,from)
 1)在from之前查找第一次出现给定字符的位置
 2)等效看待,相当于将from处之后的字符串部分截取掉,在剩余的字符串中进行查找。
char charAt(index)
 1)获取指定位置的单个字符
String subString(int start, int end)
 1)截取字符串:从start位置开始截取到end位置(不包含end位置的字符)
 2)温馨提示:java中很多方法在描述范围时都是“包前不包后”的
String subString(int start)
 1)相当于subString(int start, str.length())
byte[] getBytes("UTF-8")
 1)得到字符串的指定编码形式的编码集
 2)用于在不同编码集环境下信息的交流
String(byte[] byte, String chaesetName)
 1)将字符集byte以特定的编码集翻译为字符串。

正则表达式
 1)正则表达式是一串特定字符,组成一个“规则字符串”,这个字符串是描述文本规则的工具,正则表达
 就是记录文本规则的代码。作用是规定一个字符串的格式
 2)常见正则表达式
 [abc] a、b、c中任意一个字符
 [^abc] 除了a、b、c中任意一个字符
 [a-z] a、b、c、。。。。z的任意一个字符
 [a-zA-Z0-9] a-z、A-Z、0-9中任意一个字符
 [a-z&&[^bc]] a-z中除了b、c以外的任意一个字符
 X{N,M} 表示n到m个X
 X?  表示0或者1个X
 X*  表示0个以上X
 X+  表示1个以上X
 X{n} 表示n个X
 X{n,} 表示n个以上X
 X{n,m} 表示n-m个X
 . 任意一个字符
 \d 任意一个数字字符 [0-9]
 \D 任意一个非数字字符 [^0-9]
 \s 空白字符 [\t\n\0b\f\r]
 \S 非空白字符 [^\s]
 \w 任意一个单词字符 [a-zA-Z0-9]
 \W 任意一个非单词字符[^\w]
 []:描述的仅仅是一个字符
 ():将一组字符看成一个整体
 |:描述或关系
 3)描述邮箱格式
 [a-zA-Z0-9_]{1,}[@]{1}[a-zA-Z0-9]{1,}[\.]{1}(com|cn|net)
 [a-zA-Z0-9_]+@[a-zA-Z0-9]+\.(com|cn|net)
 
其他方面的知识:
(1)超类:super class,就是父类。这是英文的直译。Object是所有类的超类。
(2)重写:返回类型、方法名、参数列表都要一样才叫重写
(3)子类继承父类,其继承的方法的访问返回不能减小。
(4)main是静态方法,只能调用静态属性和方法。

良好的编程习惯:
(1)String s5 = new String("Hello");这种做法是很少使用的。
(2)当我们将一个字符串变量与一个字面量进行等值比较时,不要调用变量的.equals方法,而是调用字面
 量的equals方法。原因在于我们不能保证变量不是Null,若变量是null,在调用其equals方法时
 会发生空指针异常。
(3)在调用equals方法之前,要首先判断调用方法的变量是不是null。
 if(s1!=null&s1.equals(s2))。。。。。。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值