一.String字符串
(1) string构造方法
*方法名:public String()
说明:创建一个空白字符串对象,没有任何内容
String s2=new String();
System.out.println("s2"+s2);
*方法名:public String(char[] chs)
说明:根据字符组的内容,来创建字符串对象
char [] chs={'a','b','c'};
String s3 =new String(chs);
System.out.println("s3"+s3);
*方法名:public String(byte[]bys)
说明: 根据字节数组的内容,来创建字符串对象
byte[] bys={98,94,48};
String s4=new String(bys);
System.out.println("s4"+s4);
String是一个类,它是不是也有属性,方法,构造器?
String声明不可改变
1.两者的区别(有无new的区别)
s1和s2指向的abcdefg不在同一个区域内,所以s1不等于s2
//s1就是String类的对象
//类如果创建对象:new s1并没有new 但是也可以叫做对象
String s1="abcdfg";
//s2是通过new创建出来的String类的对象
//创建对象要用构造器
String s2=new String("abcdefg");
System.out.println(s1==s2); 输出结果false
=赋值 无论怎么比较 都是true new赋值 用==比较 都为false ==用来比较虚地址
二.字符串比较方法
1.比较字符串的 内容(equals)
*.equals方法 (需要传参,传String类型的参数)
有,返回值是boolean类型
访问权限public
代码展示:
package Newjava.com.jrsoft.afternoon;
import java.util.Scanner;
public class ch000 {
public static void main(String[] args) {
//定义两个字符串
String username="jisoo";
String password="czbk";
//使用for循环
for (int i = 0; i <3; i++) {
//键盘录入登录用户名和密码 用Scanner
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String name=sc.nextLine();
System.out.println("请输入密码:");
String pwd=sc.nextLine();
//equals方法比较,
if(name.equals(username)&&pwd.equals(password)){
System.out.println("登录成功");
}else{
System.out.println("登录失败,你还有"+(2-i)+"次机会");
}
}
}
}
*.length方法 (不需要传参)
有返回值,整型
访问权限 public
**面试题
字符串获取长度的方法和数组获取长度的方法有什么不同?
数组的length是属性,
字符串的length()是方法
遍历字符串
遍历字符串,首先获取到字符串的每一个字符
public char CharAt(int index) 返回指定索引处的char值
其次要获取到字符串的长度
public int.length 对象 方法.length
数组的长度 数组名.length
字符串的长度 字符串对象.length()
遍历字符串通用格式
for(int i =0;i
案例:
public static void main(String[] args) {
//键盘录入一个字符串 用scanner实现
System.out.println(line.length());
for (int i = 0; i
2.判断指定字符串
public class ch05 {
public static void main(String[] args) {
String s1 = "abcdefg";
//判断指定字符是否存在,返回值为字符串在s1的下标
//会返回从左到右遇到的第一个匹配的下标
//如果不存在,返回-1
//indexOf(string.int)代表从int位置开始查找,包括 当前位置
System.out.println(s1.indexOf("a",1));
//从后往前找
System.out.println(s1.indexOf("a",12));
3.字符串的截取
如果传一个参数,从指定位置截取,直到末尾
* 包括1位置的字符 包括起始位置的字符
* 生成一个新的字符串,不会改变原有数据
统计字符次数案例:
public static void main(String[] args) {
//键盘录入一个字符串,依旧用scanner实现
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
int bigCount=0;
int smallCount=0;
int numberCount=0;
//遍历字符串 得到每一个字符串
for (int i = 0; i < line.length(); i++) {
char ch=line.charAt(i);
//判断该字符属于哪一种类型,然后对应类型的统计变量+1
if(ch>='A'&&ch<='z'){
bigCount++;
}else if(ch>='a'&&ch<='z'){
smallCount++;
} else if (ch>='0'&&ch<='9') {
numberCount++;
}
System.out.println("大写字母;"+bigCount+"个");
System.out.println("小写字母;"+smallCount+"个");
System.out.println("数字;"+numberCount+"个");
}
}
}
4.转大写
str.out.printpln(str.toupperCase());
5.转小写
str.out.printpln(str.toLowerCase());
6.判断是否以xxx开头
str.startsWitch("a",a)
7.判断是否以xxx结尾
System.out.println(str.endsWith(""));
8.忽略大小写比较 验证码
str.equalsignoreCase(str)
9.去掉字符串前后的空格
System.out.println(str.trim());
10.根据指定字符分割,分割之后,分割条件是消失
String[] strings =str2.split(",");
for ( String string :strings){
System.out.println(string);}
4.字符串的替换
System.out.println(str.replace()
5.字符串和其他数据类型的转换
1.任何数据类型和字符串类型做加法,结果都是字符串
*空串
String s=i+""; //null ""中是字面量
System.out.println(s);
*推荐
int i = 10;
//把int 类型转化成字符串
String s=String.valueOf(i);
System.out.println(s);
2.字符串转数组
char[] array = str.toCharArray();
for (char c : array) {
System.out.print(c);
}
3.转成字符型数组
字符串转为字节型数组,就转为ASCII码状态
一般情况下,字节型数组在操作文件时用到的IO流
byte[] bytes = str.getBytes();
for (byte aByte : bytes) {
System.out.print(aByte);
}
6.包装器类型(包装类,封装类)
1.byte Byte
2.short Short
3.int Integer
4.long Long
5.float Float
6.double Double
7.char Character
8.boolean Boolean
Integer i1=10;
Integer i2=10;
原理:
自动装箱:把int类型包装成了包装器integer类型
基本数据类型转换成对应的包装器类型
自动拆箱:把integer类型包装成了包装器int类型
基本数据类型转换成对应的包装器类型
7.JDK之后的新功能:
1.自动装箱和拆箱
2.增强for循环(foreach)
3.枚举
8.异常
数组下标异常
内存溢出
空指针
字符串下标越界
数字格式化
学习心得:今天学习了String 字符串的构造方法,以及字符串的遍历和比较方法,怎么截取字符串的长度,写笔记时又把今天学的内容又回顾了一遍,慢慢理解老师所讲的内容。天道酬勤,终不负!



