Scanner:
概述:用于键盘录入数据,在程序中使用
构造方法:Scanner(InputStream source)
由于该类实在java.util包下,所以将来使用的时候,需要导包。
1、获取键盘上的int类型的数据
nextInt()
2、获取字符串数据
next(): 不会接收到特殊字符
nextLine(): 会接收到特殊字符,如换行符
package com.shujia.wyh.day14;
import java.util.Scanner;
public class ScannerDemo1 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//键盘录入一个int类型的数据
int num = sc.nextInt();
System.out.println(num);
//键盘录入一个字符串
String s1 = sc.next();
System.out.println(s1);
//nextLine()可以接收一些特殊的字符,如换行符
//这里nextLine()接收的是上面输出语句println的换行符
String s2 = sc.nextLine();
System.out.print(s2);
}
}
String:
概述:简单理解为一个签将许多的字符串起来
字符串是由多个字符组成的一串数据(字符序列)
字符串可以看成是字符数组
特点:
一旦被创建,值不能发生改变,这里的改变指的是,常量池中的字符换本身不可改变
构造方法:
public String() 无参构造方法
public String(byte[] bytes) 根据一个字节数组创建出一个字符串对象
public String(byte[] bytes,int offset,int length) 将字节数组中的一部分转化成字符串
public String(char[] value) 将字符数组转成一个字符串
public String(char[] value,int offset,int count) 将字符数组的一部分转成字符串
public String(String original) 参数是字符串的带参构造方法
package com.shujia.wyh.day14.stringdemo;
public class StringDemo1 {
public static void main(String[] args) {
//public String()
String s = new String();
System.out.println(s);
//查看字符串的长度
//public int length()返回此字符串的长度。
System.out.println("字符串s的长度为:" + s.length()); //如果字符串中没有字符,返回0
System.out.println("=====================================================");
//public String(byte[] bytes)
//根据一个字节数组创建出一个字符串对象
byte[] bytes = {97, 98, 99, 100, 101};
String s2 = new String(bytes);
System.out.println("s2: " + s2);
System.out.println("字符串s2的长度为:" + s2.length());
System.out.println("=====================================================");
//public String(byte[] bytes,int index,int length)
//将字节数组中的一部分转化成字符串
String s3 = new String(bytes, 1, 3);
System.out.println("s3: " + s3);
System.out.println("字符串s3的长度为:" + s3.length());
System.out.println("=====================================================");
//public String(char[] value)
//将字符数组转成一个字符串
char[] c = {'a', 'b', 'c', 'd', '我', '喜', '欢'};
String s4 = new String(c);
System.out.println("s4: " + s4);
System.out.println("字符串s4的长度为:" + s4.length());
System.out.println("=====================================================");
//public String(char[] value,int index,int length)
//将字符数组的一部分转成字符串
String s5 = new String(c, 4, 5);
System.out.println("s5: " + s5);
System.out.println("字符串s5的长度为:" + s5.length());
System.out.println("=====================================================");
//public String(String original)
String s7 = "你好";
String s8 = new String(s7);
System.out.println("s8: " + s8);
System.out.println("字符串s8的长度为:" + s8.length());
}
}
注意:
1、String s = new String("hello");与String s = "hello";的区别
new的时候会在堆内存中开辟空间。
注意事项:
1、==比较引用数据类型的时候,比较的时候地址值
2、String类中使用equals方法比较的是字符串的值,因为String类中重写了equals方法
package com.shujia.wyh.day14.stringdemo;
public class StringDemo3 {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = "hello";
System.out.println(s1==s2); //false
System.out.println(s1.equals(s2)); //true
}
}
2、字符串相加的时候需要注意的问题:
a、字符串如果是变量相加,是先在常量池中开辟空间,然后再做拼接。
b、字符串如果是常量相加,是先相加,然后再去常量池中去找,如果找到了,就返回,如果没有找到就开辟新的空间,存储拼接后的值。
package com.shujia.wyh.day14.stringdemo;
public class StringDemo5 {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
String s4 = "hello"+"world";
//常量相加,是先相加,然后再去常量池中去找
System.out.println(s3==s4); // true
//字符串如果是变量相加,是先在常量池中开辟空间,然后再做拼接
String s5 = s1+s2;
System.out.println(s3==s5); // false
System.out.println(s3==(s1+s2)); // false
System.out.println(s3.equals(s1+s2)); // true
}
}
String类的判断功能:
boolean equals(Object obj) 比较字符串中的内容是否相同,区分大小写比较的
boolean equalsIgnoreCase(String str) 比较字符串中的内容是否相同,忽略大小写
boolean contains(String str) 判断大的字符串中是否包含小的字符串,如果包含,返回true,反之返回false,区分大小写
boolean startsWith(String str) 测试此字符串是否以指定字符串开头,区分大小写
boolean endsWith(String str) 测试此字符串是否以指定字符串结尾,区分大小写
boolean isEmpty() 判断字符串是否是空字符串
注意:String s = "";与String s = null; 避免空指针异常,null不能调用方法
如果是变量1.equals(变量2)的时候,在做equals之前判断一下变量1是不是null
如果是一个变量1与字符串常量1做equals比较的时候,把字符串常量1放在前面调用方法,因为单独一个字符串也是一个String对象
package com.shujia.wyh.day14.stringdemo;
public class StringDemo6 {
public static void main(String[] args) {
String s1 = "helloworld";
String s2 = "Helloworld";
String s3 = "HelloWorld";
//boolean equals(Object obj)比较字符串中的内容是否相同,区分大小写比较的
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
//boolean equalsIgnoreCase(String str)比较字符串中的内容是否相同,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
//boolean contains(String str)
//判断大的字符串中是否包含小的字符串,如果包含,返回true,反之返回false
//区分大小写
System.out.println(s1.contains("Hello")); //false
System.out.println(s1.contains("hel"));
System.out.println(s1.contains("owo"));
//boolean startsWith(String str)
//测试此字符串是否以指定字符串开头
//区分大小写
System.out.println(s1.startsWith("hel"));
System.out.println(s1.startsWith("Hel")); // false
System.out.println(s1.startsWith("hell34")); // false
//boolean endsWith(String str)
//测试此字符串是否以指定字符串结尾
//区分大小写
System.out.println(s1.endsWith("rld"));
System.out.println(s1.endsWith("rlD"));
//boolean isEmpty()
//判断字符串是否是空字符串
System.out.println(s1.isEmpty());
String s4 = "";
String s5 = null;
System.out.println(s4==s5);
System.out.println(s5==s4);
System.out.println(s4.equals(s5)); //false
//需求:比较s6的值是否和s7的值一样
String s6 = null;
String s7 = "hello";
if(s6!=null){
if(s6.equals(s7)){
System.out.println("是一样的");
}
}else {
System.out.println("s6是null值");
}
//需求2:判断s6的值是否是hello
if("hello".equals(s6)){
System.out.println("是一样的");
}else {
System.out.println("s6的值不是hello");
}
}
}
String类的获取功能:
int length() 获取字符串的长度
char charAt(int index) 返回指定索引处的字符
int indexOf(int ch) 返回指定字符第一次出现的字符串内的索引(如果此字符串中没有此类字符,则返回-1)
int indexOf(String str) 返回的是小串的第一个字符在大串中出现的索引位置(如果大串中不存在小串,返回-1)
int indexOf(int ch,int fromIndex) 返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。如果找到了,返回的是字符在整个字符串中的索引(如果此字符串中没有此类字符或索引越界,则返回-1)
int indexOf(String str,int fromIndex) 返回的是小串的第一个字符在大串中出现的索引位置,以指定的索引开始搜索。如果找到了,返回的是字符在整个字符串中的索引(如果此字符串中没有此类字符或索引越界,则返回-1)
String substring(int start) 从指定位置处截取字符串,包括开始截取的位置,截取到末尾
String substring(int start,int end) 截取字符串的一部分出来截取的串从start位置开始截取,截取到end-1的位置结束,含头不含尾
package com.shujia.wyh.day14.stringdemo;
public class StringDemo7 {
public static void main(String[] args) {
String s = "helloworld";
//int length() 获取字符串的长度
System.out.println("字符串s的长度为:"+s.length());//如果字符串中没有字符,返回0
System.out.println("==================================");
//char charAt(int index) 返回指定索引处的字符
//0<=index<=length()-1
System.out.println(s.charAt(4));
System.out.println(s.charAt(0));
System.out.println(s.charAt(9));
System.out.println("==================================");
//public int indexOf(int ch)返回指定字符第一次出现的字符串内的索引。
//需求:获取o在字符串中第一次出现的位置
System.out.println(s.indexOf('o'));
//如果此字符串中没有此类字符,则返回-1 。
System.out.println(s.indexOf(97));
System.out.println("==================================");
//public int indexOf(String str)返回的是小串的第一个字符在大串中出现的索引位置
System.out.println(s.indexOf("owo"));
//如果大串中不存在小串,返回-1
System.out.println(s.indexOf("owe"));
System.out.println("==================================");
// public int indexOf(int ch,int fromIndex)
// 返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。
//如果找到了,返回的是字符在整个字符串中的索引
System.out.println(s.indexOf("l",4)); // 8
System.out.println(s.indexOf("p",4)); // -1
System.out.println("==================================");
// int indexOf(String str,int fromIndex)
// 返回的是小串的第一个字符在大串中出现的索引位置,以指定的索引开始搜索
//如果找到了,返回的是字符在整个字符串中的索引
System.out.println(s.indexOf("owo",2)); //4
System.out.println("==================================");
//String substring(int start) 从指定位置处截取字符串,包括开始截取的位置,截取到末尾
//如果给的索引值不存在,报错
System.out.println(s.substring(3)); // loworld
System.out.println("==================================");
//String substring(int start,int end)
//截取字符串的一部分出来
//截取的串从start位置开始截取,截取到end-1的位置结束
//含头不含尾。
System.out.println(s.substring(5,8)); // wor
}
}
String类的转换功能:
byte[] getBytes() 将字符串转成字节数组
char[] toCharArray() 将字符串转成字符数组
static String valueOf(char[] chs) 将字符数组转成字符串
static String valueOf(int i) 将int类型的数据转成字符串
String toLowerCase() 将字符串中的内容全部转小写
String toUpperCase() 将字符串中的内容全部转大写
String concat(String str) 将小括号中str的字符串拼接到大字符串的后面
public String[] split(String regex) 输出按regex分隔开的字符串
package com.shujia.wyh.day14.stringdemo;
public class StringDemo8 {
public static void main(String[] args) {
String s = "HelloWorLD";
//public byte[] getBytes()
//将字符串转成字节数组
byte[] bytes = s.getBytes();
for(int i=0;i<bytes.length;i++){
System.out.print(bytes[i]);
}
//72 101 108 108 111 87 111 114 76 68
System.out.println("=================================");
//char[] toCharArray()
//将字符串转成字符数组
char[] chars = s.toCharArray();
for(int i=0;i<chars.length;i++){
System.out.println(chars[i]);
}
System.out.println("=================================");
//static String valueOf(char[] chs)
//将字符数组转成字符串
String s1 = String.valueOf(chars);
System.out.println(s1);
System.out.println("=================================");
//static String valueOf(int i)
//将int类型的数据转成字符串
String s2 = String.valueOf(100); // 100 --> "100"
System.out.println(s2); //100
System.out.println("=================================");
//String toLowerCase()
//将字符串中的内容全部转小写
String s3 = s.toLowerCase();
System.out.println(s3); //helloworld
System.out.println("=================================");
//String toUpperCase()
//将字符串中的内容全部转大写
String s4 = s.toUpperCase();
System.out.println(s4); //HELLOWORLD
System.out.println("=================================");
//String concat(String str)
//将小括号中str的字符串拼接到大字符串的后面
String s5 = s.concat("hadoop");
System.out.println(s5);
System.out.println("=================================");
//public String[] split(String s)
//输出按s分隔开的字符串
String s6 = "hello world hello java world";
//需求:求出字符串中的每一个单词
String[] strings = s6.split(" ");
for(int i=0;i<strings.length;i++){
System.out.println(strings[i]);
}
}
}
String类的其他功能:
替换功能
String replace(char old,char new) 将新的字符替换字符串中指定的所有字符,并返回一个替换后的字符串
String replace(String old,String new) 将字符串中旧的小串用新的小串替换,返回一个替换后的字符串。如果被替换的字符串不存在返回的是原本的字符串
去除字符串两边若干个空格
String trim()
按字典顺序比较两个字符串
int compareTo(String str)比较字符串是否相同,如果相同返回0。不同时返回第一个不同字符ASCII码值的差,若对应字符都相同(长度不同)则返回字符串长度差
int compareToIgnoreCase(String str)不区分大小写
package com.shujia.wyh.day14.stringdemo;
public class StringDemo9 {
public static void main(String[] args) {
String s = "hellowrodldajavahadoopowollohelloowo";
//String replace(char old,char new)
//将新的字符串替换字符串中指定的所有字符,并返回一个替换后的字符串
String s1 = s.replace('l', 'q');
System.out.println(s);
System.out.println(s1);
System.out.println("====================================");
//String replace(String old,String new)
//将字符串中就的小串用新的小串替换,返回一个替换后的字符串
String s2 = s.replace("owo", "===");
System.out.println(s);
System.out.println(s2);
//如果被替换的字符串不存在返回的是原本的字符串
String s4 = s.replace("qwer", "LOL");
System.out.println(s);
System.out.println(s4);
System.out.println("====================================");
//String trim() 去除字符串两边的若干个空格
String s5 = " hello world ";
System.out.println(s5);
System.out.println(s5.trim());
System.out.println("====================================");
//int compareTo(String str) //比较字符串是否相同,如果相同返回0
String s6 = "hello"; // h的ASCII码值是 104
String s7 = "hello";
String s8 = "abc"; // a的ASCII码值是 97
String s9 = "qwe"; // q的ASCII码值是 113
System.out.println(s6.compareTo(s7)); // 0
//不同时返回第一个不同字符ASCII码值的差
System.out.println(s6.compareTo(s8)); // 7
System.out.println(s6.compareTo(s9)); // -9
//对应字符都相同(长度不同)则返回字符串长度差
String s10 = "hel";
System.out.println(s6.compareTo(s10)); // 2
}
}