String类
字符串都用“”,+进行字符串拼接,JVM支持字符串类
但是需要注意的是,String可以保存字符串是因为其中定义了一个数组,String类中的数据都保存在数组中
Jdk1.9开始String使用byte数据类型,字节数组
1.8用字符数组
String可以通过直接赋值,或者构造方法如:
String name = new String(“helloworld”);
后面差别后面比较
String的数据比较
String也可以试用“==”来判断是否相等,但是不准确。
比较不成功,可以使用public boolean equals(String str)进行比较
即String1.equals(String2)
面试题:String比较中”==”与equals()区别
1. ”==”进行的是数值比较,比较的是地址比较
2. Equals()比较的是地址中的内容比较.
字符串常量是String类的匿名对象
在程序开发中任一个任意的一个整数都是int型,任意的小数都是double型,任何使用双引号的常量都是String类.
String匿名对象可以调用equals()方法
程序中没有字符串常量这种基本类型,有的只是String类的匿名对象
关于对象相等判断相等的技巧:
1. 当用户输入数据是进行比较,可以使用常量调用equals()方法进行回避用户空输入的功能.例如:String input = null;
System.out.println(“mldn”.equals(input));
String类两种实例化方式区别
1. 直接赋值的实例化模式,可以实现同一个字符串的数据共享是因为Java程序底层提供有一个专门的字符串池(字符串数组)
2. 这样构造方法实例化方法会存在浪费空间问题:
3. 实例化对象的内容不会自动入池,但是可以通过public String intern()进行手工入池即:
String.intern();
面试题:解释String类两种实例化两者区别?
直接赋值:指挥产生一个实例化对象,且自动保存在对象池当中,以实现字符串实例的重用
构造方法:会产生两个实例化对象,且不会自动入池,无法实现对象重用,可以使用intern()进行手工入池.
String对象(常量)池
对象池的主要目的是实现数据的共享处理.但是在java中对象池分为
静态常量池:在程序加载时会对所有保存的字符串,普通常量,类和方法的信息等等进行分配
运行时常量池:当一个程序加载后,可能是变量,这时提供的常量池
字符串内容不可修改
在String类中包含的时一个数组,数组的缺点在于长度不可改变.只是改变的是引用的地址,这样就会产生很多内存垃圾,会影响程序的性能.在String中尽量不要进行频繁的修改.
主方法组成分析
主方法有:public static void main(String args[]){}
(1)public:描述的是一种访问权限.开始点一定是公共的
(2)static:程序的执行是通过类名称完成的,所以表示此方法是由类直接调用.
(3)void:主方法是一切的起点,必定不会有返回值
(4)main:是一个系统定义号的方法名称
(5)String[] args:字符串数组,可以实现程序启动参数的接收