2,String类、this、static、final(finally,finalize)

一、String类

● 字符串比较:== 和 equals()的区别?

·· ==:比较的是两个字符串内存地址的数值是否相同,属于数值比较;

·· equals(): 比较的是两个字符串的内容,属于内容比较

● string类的两种实例化方法的区别?

··直接赋值: 在每一个运行的JVM低层存在一个字符串的对象池(方法区的运行时常量池),直接赋值会将字符串的内容放入到池中,以供其他继续使用直接赋值方法的String对象使用,如果新声明的字符串内容不再池之中,则会开辟一个新的,继续放到池中,以供下次使用;String str = "hello" ----实际上开辟了两块空间

··构造方法实例化:开辟两块堆内存空间,一块成为垃圾,不能入池(除非手动intern())


public class StringDemo {

    public static void main(String args[]) {

        String str1 = new String("Hello").intern();

        String str2 = "Hello";// 入池

        String str3 = "Hello";// 使用池对象

        System.out.println(str1 == str2);// true

        System.out.println(str1 == str3);// true

        System.out.println(str2 == str3);// true

    }

}

● String 、StringBuffer、StringBuilder的区别?

String s = "abcd";
s = s+1;
System.out.print(s);// result : abcd1

上述代码解释:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来执行第二行代码,也就是说我们之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉

StringBuilder与StringBuffer,前者线程非安全,后者线程安全

● String类的常用方法:

//字符串与字符:
public String(char[] value) ---将全部字符数组转变为字符串
public char[] toCharArray()---将字符串转换为字符串数组
//字符串比较:
public boolean equals(String anObject) 
public boolean equalsIgnoreCase(StringanotherString)
public int compareTo(String anotherString)---比较两个字符串大小(1,0,-1)
//字符串查找:
public boolean contains(String s)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
//字符串替换:
public String replaceAll(String regex, String replacement)
public String replaceFirst(String regex, String replacement) 
//字符串截取:
public String substring(int beginIndex)---从指定位置开始截取到结尾
public String substring(int beginIndex, int endIndex) ---截取指定范围的内容
//字符串拆分:
public String[] split(String regex)
public String[] split(String regex, int limit)

二、this关键字

⑴、this关键字用于区分局部变量和成员变量,比如在方法的参数中有名称与成员变量相同的变量,那么在该方法进行赋值等其他操作运算的时候,成员变量必须使用this来作为前缀,以此作为区分
⑵、类的方法中如果有对成员变量的操作,那么该方法会持有this兑现的引用地址,这样能让方法知道,它被哪个对象调用了

三、static关键字

⑴、如果类中的某个方法并没有涉及到任何成员变量,那么这个方法就没有实例化的必要,可以使用static修饰。
⑵、静态方法只能访问类中的其他静态方法,或者静态成员变量,而不能直接访问非静态方法和非静态的成员变量。
⑶、静态方法不能出现this关键字和super关键字,因为持有对象的引用没有意义的
⑸、主函数必须是静态的
⑹、静态成员变量即被static修饰的成员变量,可以直接通过类名.方法名直接进行调用,而且同类的多个对象应该是保有一份相同的静态成员变量,静态成员变量优于对象的存在,不会因为一个对象对静态成员变量的修改而导致其他对象的静态成员变量的修改,并且静态成员随着类的加载而加载,而不是对象,会随着类的消失而消失,并且存储在方法区的静态代码区中

⑺、静态代码块是为了完成某个共同的初始化类操作而存在的,随着类的加载而执行,并且只加载一次
代码块只会随着对象的加载而加载,每次创建一次对象,就会加载一次
且静态代码块优先于构造块和主方法执行,不管有多少个实例化对象产生,静态块都只调用一次

四、final、finally、finalize

1.final:如果一个类被final修饰,意味着该类不能派生出新的子类,不能作为父类被继承。因此一个类不能被声明为abstract,又被声明为final。将变量或方法声明为final。可以保证他们在使用的时候不被改变。其初始化可以在两个地方:一是其定义的地方,也就是在final变量在定义的时候就对其赋值;二是在构造函数中。这两个地方只能选其中的一个,要么在定义的时候给值,要么在构造函数中给值。被声明为final的方法也只能使用,不能重写。

2.finally:在异常处理的时候,提供finally块来执行任何的清除操作。如果抛出一个异常,那么相匹配的catch字句就会执行,然后控制就会进入finally块,前提是有finally块。

3.finalize:finalize是方法名,java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是在垃圾收集器确认一个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此,所有的类都继承了它。子类覆盖finalize()方法已整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,623评论 18 399
  • 1、.java源文件: 一个以”.java“为后缀的源文件:只能有一个与文件名相同的类,可以包含其他类。 2、类方...
    Hughman阅读 1,466评论 1 9
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,497评论 0 3
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,101评论 0 62
  • 我不是来写文章的,只是想把一些内容记下来! 2016.11想要在上海或周边城市买一座房子,属于自己的房子,努力攒钱...
    wuliMark阅读 175评论 0 0