字符串与集合解释String类的用法

1.Java当中的数据类型只有两种:基本数据类型  引用数据类型;

基本类型就是八个关键字  ,只要不是这八者之一,那么剩下的就全是 引用数据类型,所以字符串就是一种引用类型;

例子:Scanner  sc=new Scanner(System.in)

            数组;    直接使用的字符串常量也是一个字符串对象;

只要是字符串就是一个对象

字符串就是Java,lang,String的对象,里面也包含三个部分

  • 成员变量
  • 成员方法
  • 构造方法 


2.字符串对象与其他对象的区别

既然说字符串是一个对象,那么就两个问题需要解释;

a)对象肯定有一个类与之对应,那么字符串对应的类是?String

为什么String这个类不需要导包就可以直接使用?  

所有的类都需要导包才能使用;除了两种情况;

A,需要使用的目标类和当前类位于同一个包下

B,要使用的目标类,位于Java.lang这个包下;但是不包含子包内容

b)既然字符串是对象为什么直接打印出来就是内容呢?

打印println方法逻辑;

1.如果是字符串内容,那么直接显示内容;

2.如果是字符串类型,那么就想办法内部转换成字符串,然后显示;

一般的对象都是使用“类型信息+@+地址值”作为字符串内容;

 如何使用String这个类?(什么是文档注释,什么是使用说明书)

API(目标,索引,搜索)、使用方法;导包,创建,使用;

已过时,历史遗留下 不要用;String 不用new 直接双引号;结合API文档学习String 怎么使用;

这之前说过String是一个类,字符串是一个对象;

字符串常用的2+1中方式(两种构造,一种直接赋值)
常用的两个构造方法
1.public String(char[] array);参数是一个字符数组;
根据字符数组的内容来创建一个字符串


2. public String(char[] array ,int offset,int count):
根据字符数组的一部分来创建字符串

offset 代表起始索引,count 代表取用到多少个个数;


3.直接定义字符串


字符串池的设计

字符串是最常用的对象,所以在程序当中往往会出现多个重复的字符串

为了节省内存,所以引入了字符串池的设计,可以重复利用字符串;

关于字符串池的几点描述

  1. 字符串池是位于堆内存中的一小块空间,用来保存若干个字符串的地址值;只要是双引号的就放入
  2. 字符串池中的绝对不会出现重复的字符串对应的地址,保证字符串不重复;
  3. 凡是直接双引号的字符串默认都在池中,而new出来的字符串默认不在池中;
对于基本类型来说     ,==是进行数据内容相同的比较;但是对于引用类型来说,  ==是进行地址值的相同比较;
如果是两个对象,那么地址值必然不同,如果地址值相同,必然是同一个对象。

直接双引号赋值;在池中


new了之后 ,产生新的对象,地址值不同;

  1. 字符串对象一旦在内存中被创建,那么内容不可被改变;
  2. 字符串当中的内容不会发生改变,每当你觉得好像发生了改变的时候,一定是创建了新的字符串;


改变的是str这个变量对应的地制值,不是字符串,如下


3.字符串的比较方法;

如果进行字符串内容的比较?

  • 如果==进行比较,那么进行的是地址值得相同判断;
  • 如果希望进行字符串内容的比较     则需要使用String 当中的成员方法;
  • public boolean equals(Object obj);进行字符串内容的比较,严格区分大小写;参数obj就是另一个对象(跟谁比);
  • Object 也是一种类型 ,他可以接受任何类型的数据;
  • public booiean equalsIgnoreCase(String str):进行字符串的内容比较,但是忽略大小写;

注意:

  1. 要想进行字符串的内容比较,一定要用equals方法,不要使用==
  2. equals方法具有对称性,a.equals(b)和b.equals(a) 效果一样;
  3. 小技巧:如果 equals方法 需要比较的是两个字符串当中有一个是常量,那么尽量将常量写在前面;调用方法的时候,对象名当中如果存在null值,那么将会发生“空指针异常”NullPointerException;
  4. 直接写上双引号就是字符串对象,所以双引号直接点也能调用;



使用String的 equals 和equalsIgnoreCase两个方法,来模拟一个简单的登录场景;

  1. 登录需要用户名密码两个信息,也就是两个字符串
  2. 用户名密码应该从键盘输入,获取两个字符 Scanner
  3. 怎样才算登录成功?肯定再注册时候提前写好正确的登录名,密码
  4. 判断输入的用户名密码与正确的用户名密码是否一致;

  • 用户名必须正确
  • 密码必须正确

上述两个条件是并且的关系 缺一不可   用到的逻辑运算符 &&

  1. 判断是否登录成功
  2. 如果登录成功,显示欢迎您,失败则退出系统;



1.如果希望将字符串当中的指定部分进行替换操作,需要使用:

public Static replace (CharSequence oldStr,CharSequence newStr):将字符串当中出现的的所有oldStr部分,替换成newStr部分;

参数oldStr代表需要被替换的老字符串部分

参数newStr代表的是需要替换成为的新字符串

参数类型CharSquence 现阶段可以简单的认为就是字符串String;


2.如果希望将字符串按照指定的标记切分为若干段,那么可以使用的方法

public String[] split(String regex): 将regex作为标记进行切刀,返回切分之后的若干段字符串(字符串数组)

注意事项:

现阶段强烈推荐不要使用英文句点作为分割标记

因为英文句点在正则表达式中有特殊含义(涉及双重转义)

而参数regex其是就是一个正则表达式(今后更新)

如果一定要使用英文句点,切割的标记应该使用“\\.”(现阶段的固定写法);


..............


猜你喜欢

转载自blog.csdn.net/wujj5_ttc/article/details/80413455