600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java的知识点15——String基础 String类和常量池 String类常用的方法 字符串相等的

java的知识点15——String基础 String类和常量池 String类常用的方法 字符串相等的

时间:2021-06-29 14:25:18

相关推荐

java的知识点15——String基础 String类和常量池 String类常用的方法 字符串相等的

String基础

1. String类又称作不可变字符序列。

2. String位于java.lang包中,Java程序默认导入java.lang包下的所有类。

3. Java字符串就是Unicode字符序列,例如字符串“Java”就是4个Unicode字符’J’、’a’、’v’、’a’组成的。

4. Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。

5. Java允许使用符号"+"把两个字符串连接起来。

注:符号"+"把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式。

当"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

"+"连接符

package cn.dym05;public class Test05 {public static void main(String[] args) {int age=18;String str="age is "+age;System.out.println(str);}}

String类和常量池

在Java的内存分析中,我们会经常听到关于“常量池”的描述

实际上常量池也分了以下三种:

1. 全局字符串常量池(String Pool)

2. class文件常量池(Class Constant Pool)

3. 运行时常量池(Runtime Constant Pool)

常见问题:

String abc="a"+"b"+"c"; 一共创建了几个对象?

String s=new String("hello"); 一共创建了几个对象?

关键词:对象个数 内存指向

String pool 机制

目的:JVM为了提高性能和减少内存开销,实现数据共享

1. 为字符串开辟一个字符串常量池(存在于方法区) 方法区线程共享

2. 创建字符串常量时,首先检查字符串常量池中是否存在该字符串

3. 存在该字符串,返回引用实例;不存在,实例化该字符串并放入池中

优化String String intern()

package cn.dym06;public class StringPoolDemo {public static void main(String [] args) {String s1="Cat";String s2="Cat";String s3=new String("Cat");String s4=new String("Cat").intern();System.out.println(s1==s2);System.out.println(s1==s3);System.out.println(s1==s4);}}

String类常用的方法

String类的常用方法列表

String类常用方法一

package cn.dym06;public class StringTest1 {public static void main(String [] args) {String s1="core java";String s2="Core java";System.out.println(s1.charAt(3));//eSystem.out.println(s1.length());//9System.out.println(s1.equals(s2));//falseSystem.out.println(s1.equalsIgnoreCase(s2));//trueSystem.out.println(s1.indexOf("java"));//字符串s1中是否包含Java //5System.out.println(s1.indexOf("apple"));//-1String s=s1.replace(' ', '&');System.out.println("result is :"+s);//result is :core&java}}

String类常用方法二

package cn.dym06;public class StringTest2 {public static void main(String[] args) {String s="";String s1="How are you?";System.out.println(s1.startsWith("How"));//trueSystem.out.println(s1.endsWith("you"));//falses=s1.substring(4);System.out.println(s);s=s1.substring(4, 7);//只能取到开头,不能取到结尾System.out.println(s);s=s1.toLowerCase();System.out.println(s);s=s1.toUpperCase();System.out.println(s);String s2=" How old are you!! ";s=s2.trim();System.out.println(s);System.out.println(s2);}}

字符串相等的判断

1. equals方法用来检测两个字符串内容是否相等。如果字符串s和t内容相等,则s.equals(t)返回true,否则返回false。

2. 要测试两个字符串除了大小写区别外是否是相等的,需要使用equalsIgnoreCase(“other String”)方法。

3. 判断字符串是否相等不要使用"=="。

字符串的比较"=="与equals()方法

package cn.dym06;public class Test01 {public static void main(String[] args) {System.out.println("Hello".equalsIgnoreCase("hellO"));//trueString s1="代止兮";String s2="代止兮";String s3=new String("代止兮");System.out.println(s1==s2);//trueSystem.out.println(s1==s3);//falseSystem.out.println(s1.equals(s3));//true //s1和s2里面的字符串内容是一样的}}

组合模式

package cn.dym06;class Cpu{public void run() {System.out.println("quickly…………");}}class MainBoard{public void connect() {System.out.println("connect…………");}}class Memory{public void store() {System.out.println("store…………");}}public class Computer {Cpu cpu;Memory memory;MainBoard mainBoard;public void work() {cpu.run();memory.store();mainBoard.connect();}public static void main(String[] args) {Computer computer=new Computer();computer.cpu=new Cpu();computer.memory=new Memory();computer.mainBoard=new MainBoard();computer.work();}}

属性用于定义该类或该类对象包含的数据或者说静态属性。属性作用范围是整个类体。

· 栈内存

1. 每个线程私有,不能实现线程间的共享!

2. 局部变量放置于栈中。

3. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!

· 堆内存

1. 放置new出来的对象!

2. 堆是一个不连续的内存空间,分配灵活,速度慢!

· 方法区

1. 被所有线程共享!

2. 用来存放程序中永远是不变或唯一的内容(类代码信息、静态变量、字符串常量)。

java的知识点15——String基础 String类和常量池 String类常用的方法 字符串相等的判断 组合模式

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。