java的String类入门

  java的String类入门

  1. 概述

  只要是用双引号括起来的都叫字符串

  String类在包java.lang.String中,只要是java.lang中的包,在写程序时都不需要import进来

  字符串的内容一旦创建,将不可再改变,是一个常量

  正是因为字符串不可改变,所以字符串是可以共享使用的。想想如果共享的东西大家可以随便修改,用一次残一次,谁还想去共享呀,想想都恶心,共享单车大家都可以用,就代表用的时候可以随便糟蹋它,拆它???

  字符串效果上相当于是char[]字符数组,但是底层原理是byte[]数组

  2. String类的创建(3+1种方式)

  2.1 三种构造方法

  public String(); 创建一个空白的字符串,不含有任何的内容

  public String(char[] array); 根据字符串数组的内容,来创建对应的字符串

  public String(byte[] array); 根据字节数组的内容,来创建对应的字符串

  1

  2

  3

  三种构造方法用代码演示一遍

  public class ConstructString {

  public static void main(String[] args) {

  //第一种构造方法:public String(); 创建一个空白的字符串,不含有任何的内容

  String str1 = new String();

  System.out.println("第一个字符串:" + str1); //第一个字符串:

  //第二种构造方法:public String(char[] array); 根据字符串数组的内容,来创建对应的字符串

  char[] charArray = {‘A‘, ‘B‘, ‘C‘};

  String str2 = new String(charArray);

  System.out.println("第二个字符串:" + str2); //第二个字符串:ABC

  //第三种构造方法:public String(byte[] array); 根据字节数组的内容,来创建对应的字符串

  byte[] byteArray = {97, 98, 99}; //注意,byte数组的元素,是ASCII码表的字符对应值

  String str3 = new String(byteArray);

  System.out.println("第三个字符串:" + str3); //第三个字符串:abc

  }

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  2.2 一种直接创建

  String str4 = "HelloWorld!"

  1

  不管有没有new,只要是双引号内的东西,JVM会都会判断到是字符串,所以可以直接创建

  3. 常量池

  3.1 字符串中关于比较的小知识

  我们要知道,在java中,用if(String1 == String2)比较两个字符串,比较的是这两个字符串的地址是否一样,而如果想知道它们的值是否一样,用的是String的equals方法,比如:

  public static void main(String[] args) {

  String str1 = new String("hello");

  String str2 = new String("hello");

  //比较str1的地址是不是和str2的地址一样

  System.out.println( str1 == str2 ); //false 不一样

  //比较str1的值和str2的值是不是一样

  System.out.println( str1.equals(str2) ); //true 一样,都是hello

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  3.2 堆 (heap) 中的常量池

  str1和str2的比较结果为true,证明了它们是同一个字符串,只不过有两个名字而已,在内存中都是指向同一个地址,它们在的地方叫常量池,所以常量池的hello字符串是可以共享使用,不可修改的。

  str1和str3不一样,证明它们的地址是不一样的,通过new来创建的字符串,都不是在常量池中,但也是常量

  public class ConstantPool {

  public static void main(String[] args) {

  String str1 = "hello";

  String str2 = "hello";

  String str3 = new String("hello");

  System.out.println(str1 == str2); //true

  System.out.println(str1 == str3); //false

  System.out.println(str2 == str3); //false

  }

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  4. 字符串的比较方法

  4.1 String的equals方法

  由 3.常量池 中的小知识,我们知道比较两个字符串的值是否一样,用的是equals方法,返回值是一个布尔值,一样就是true,不一样就是false。

  public boolean equals(Object obj)

  1

  补充:任何对象都可以用Object进行接收,String类的当然也可以。

  equals方法具有对称性,也就是str1.equals(str2)和str2.equals(str1)的结果是一样的

  注意:如果比较双方是一个常量一个变量,推荐把字符串常量写在前面

  即推荐“abc”.equals(str) 不推荐:str.equals(“abc”)

  因为如果字符串str是一个null,“abc”.equals(str)的结果肯定是false,但是str.equals(“abc”)这样写将会导致空指针异常 NullPointerException,不要随随便便搞一个异常出来。

  4.1 String的equalsIgnoreCase方法

  它和equals方法的区别在于,它忽略了大小写,Ignore忽略,Case大小写

  public static void main(String[] args) {

  String str1 = "hello";

  String str2 = "HellO";

  //比较str1的值和str2的值是不是一样,严格区分大小写

  System.out.println( str1.equals(str2) ); //false

  //比较str1的值和str2的值是不是一样,忽略大小写

  System.out.println( str1.equalsIgnoreCase(str2)); //true

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  5. String中与获取相关的方法

  概述

  public int length(); 获取字符串当中含有的字符个数,拿到字符串长度

  public String concat(String str); 将当前字符串和参数字符串拼接成为返回值作为新的字符串

  public char charAt(int index); 获取指定索引位置的单个字符。(索引从0开始)

  public int indexOf(String str); 查找参数字符串在本字符串当中首次出现的索引位置,如果没有没有-1值

  1

  2

  3

  4

  5.1 length()和concat(String str)

  public static void main(String[] args) {

  //length()方法,获取字符串的长度

  int length = "abcdefghijk".length();

  System.out.println("字符串的长度是:" + length);

  //concat(String str),拼接字符串

  String str1 = "Hello";

  String str2 = "World";

  String str3 = str1.concat(str2); //str1经过拼接后产生了一个新的字符串,而str1本身不变

  //打印拼接后的字符串

  System.out.println(str1);

  System.out.println(str2);

  System.out.println(str3);

  }

  /*输出结果:

  字符串的长度是:11

  Hello

  World

  HelloWorld

  */

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  5.2 charAt(int index)和indexOf(String str)

  public static void main(String[] args) {

  //charAt(int index),获取指定索引位置的单个字符

  char ch = "hello".charAt(1);

  System.out.println("在1号索引位置的字符是:" + ch);

  //indexOf(String str),查找参数字符串在本来字符串当中出现的第一次索引位置

  //如果没有,就返回-1值

  String original = "helloworld!";

  int index = original.indexOf("ll0");

  System.out.println("第一次索引值是:" + index); //2

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  6.字符串的截取方法

  概述

  public String substring(int index); 截取从参数位置一直到字符串末尾,返回新字符串。它是[begin, 尽头), 包含左边,右边直到末尾

  public String substring(int begin, int end); 截取胸begin开始,一直到end结束,中间的字符串。 它是[begin, end),包含左边,不包含右边

  1

  2

  6.1 代码演示

  public static void main(String[] args) {

  String str1 = "HelloWorld!";

  //substring(int index) 方法

  String str2 = str1.substring(5); //[ 5, 尽头 )

  System.out.println(str2); //World!, 这是新的字符串

  //substring(int begin, int end) 方法

  String str3 = str1.substring(5, 8); // [ 5, 8 )

  System.out.println(str3); //Wor

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  7. 字符串的转换方法

  概述

  public char[] toCharArray(); 将当前字符串拆分成为字符串数组作为返回值

  public byte[] getBytes(); 获得当前字符串底层的字符数组,注意!,不是toBytes()

  public String replace(CharSequence oldString, CharSequence newString); 将所有出现的老字符串替换成新的字符串,返回替换之后的结果作为新的字符串

  1

  2

  3

  7.1 代码演示

  public static void main(String[] args) {

  //toCharArray(); 将当前字符串拆分成为字符串数组作为返回值

  char[] chars = "hello".toCharArray();

  System.out.println(chars[0]); //h

  System.out.println(chars.length); //5, 注意,一般数组的方法是没有小括号的

  //byte[] getBytes(); 获得当前字符串底层的字符数组

  //注意!没有toByte()方法

  byte[] bytes = "abc".getBytes();

  for(int i = 0; i < bytes.length; i++) {

  System.out.println(bytes[i]); //97, 98, 99,分别是字符abc的ASCII码表数值

  }

  // replace方法,可以做一下敏感词汇过滤

  String str1 = "Fuck!";

  String str2 = str1.replace("uc", "**"); //把uc替换成**

  System.out.println(str2); //F**k!;

  }

  郑州不孕不育医院:http://yyk.39.net/zz3/zonghe/1d427.html/郑州不孕不育医院哪家好:http://yyk.39.net/zz3/zonghe/1d427.html/郑州不孕不育医院排名:http://yyk.39.net/zz3/zonghe/1d427.html/

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  8. 字符串的分割方法

  概述

  public String split(String regex); 按照参数的规则,将字符串分成若干部分,注意!当分割点为英文句点时,参数regex不能是".", 要写成"\\."

  1

  8.1 代码演示

  public static void main(String[] args) {

  //split(String regex)方法分隔字符串

  String str1 = "AAA,BBB,CCC";

  String[] array1 = str1.split(","); //以逗号分隔

  for(int i = 0; i < array1.length; i++) {

  System.out.println(array1[i]); // AAA BBB CCC

  }

  //注意!split方法的参数其实是一个正则表达式

  //也就是说,如果按照英文句点 "." 进行切分,必须写"\\.",因为句点有特殊含义

  String str2 = "XXX.YYY.ZZZ";

  String[] array2 = str2.split("\\.");

  for(int i = 0; i < array2.length; i++) {

  System.out.println(array2[i]); //XXX YYY ZZZ

  }

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  9.小练习

  9.1 题目

  键盘输入一个字符串,并且统计其中各种字符出现的次数

  种类有:大写字母、小写字母、数字、其它

  9.2 思路

  既然用到键盘输入,肯定是Scanner

  键盘输入的是字符串,那么:String str = sc.next();

  定义四个变量,分别代表四种字符个子出现的次数

  需要对字符串一个字,一个字检查,那我们可以用String的charAt方法,也可以先把字符串转成char[] 数组进行遍历

  遍历字符串,对当前种类进行判断,并且用四个变量进行++操作

  打印输出四个变量,分别代表四种字符出现的次数

  9.3 代码演示

  public static void main(String[] args) {

  // 1. 既然用到键盘输入,肯定是Scanner

  Scanner sc = new Scanner(System.in);

  //2. 键盘输入的是字符串,那么:String str = sc.next();

  String str = sc.next();

  //3. 定义四个变量,分别代表四种字符个子出现的次数

  int countUpper = 0;

  int countLower = 0;

  int countNumber = 0;

  int countOther = 0;

  //4. 遍历字符串,对当前种类进行判断,并且用四个变量进行++操作

  for(int i = 0; i < str.length(); i++) {

  char ch = str.charAt(i);

  if(ch >= ‘A‘ && ch <= ‘Z‘) {

  countUpper++;

  }else if(ch >= ‘a‘ && ch <= ‘z‘) {

  countLower++;

  }else if(ch >= ‘0‘ && ch <= ‘9‘) {

  countNumber++;

  }else {

  countOther++;

  }

  }

  //5. 打印输出四个变量,分别代表四种字符出现的次数

  System.out.println("大写字母的个数:" + countUpper);

  System.out.println("小写字母的个数:" + countLower);

  System.out.println("数字的个数:" + countNumber );

  System.out.println("其它的个数:" + countOther);

  }

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  哈哈,因为空格代表结束输入,所以在这个代码中,无法统计空格的个数

  ————————————————

  版权声明:本文为CSDN博主「阿福97」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

  原文链接:https://blog.csdn.net/weixin_43836046/article/details/96764238

原文地址:https://www.cnblogs.com/sushine1/p/11404524.html

时间: 2024-10-10 08:48:12

java的String类入门的相关文章

hadoop中Text类 与 java中String类的区别

hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.例如 unicode就是一个字符集,它的目标是涵盖世界上所有国家的文字和符号: 字符编码:是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对.即在符号集

【java】String类的基本方法

Java的String类基本方法 一.构造函数 函数 返回值 作用 String(byte[] bytes) String 通过byte数组构造字符串对象 String(char[] chars) String 通过char数组构造字符串对象 String(String string) String 拷贝一个值为string的字符串对象 String(StringBuffer buffer) String 通过StringBuffer构造字符串对象 二.String类的基本方法 函数 返回值 作

Java中String类学习总结

java中String类的使用频率非常高,本人在学习此模块时,认为下列几点知识值得注意: 一.String是不可变对象 java.lang.String类使用了final修饰,不能被继承.Java程序中的所有字面值,即双引号括起的字符串,如"abc",都是作为String类的实例实现的.String是常量,其对象一旦构造就不能再被改变.换句话说,String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创造了一个全新的String对象,以包含修改后的字符串内容.而最

【转载】Java中String类的方法及说明

转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.构造函数     String(byte[ ] bytes):通过byte数组构造字符串对象.     String(char[ ] value):通过char数组构造字符串对象.     String(Sting original):构造一个original的副本.即:拷贝一个original.     String(Strin

深入分析Java的String类的方法与特点

字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 JDK中提供一个名为String的类,对应字符串这个变量类型. 源码分析 既然JDK中的String类对应了字符串变量类型,为了熟练地掌握Java中字符串相关的技能,我们必须深入地分析和研究一下这个类.编码界有一句名言叫做 "源码面前,了无秘密",因此,我们第一步就是来看看String类

java中String类小结

构建一个字符串 1.用字符串直接量: String message = new String("Welcome to java"); 2.用字符串直接量: String message = "Welcome to java"; 3.用字符数组 Char[] charArray = {'m', 'y'}; String message = new String(charArray); 不可变字符与限定字符串 String对象是不可变的,内容不能改变 java虚拟机为了

Java中String类与Integer类的几个方法

计算诸如-123,456,789 + 123,123的值 import java.math.BigInteger; import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); String str1, str2; BigInteger a, b; while(cin.hasNext()){ str1 = cin.

java笔记--String类对象解析与运用

1.String中的equals和==的区别 String是对象而非基本数据类型,不能使用"=="来判断两个字符串是否相当, 判断两个字符串内容是否相同用equals(); 判断两个字符串内存地址是否相同用"==" 2.startsWith(String str): 判断字符串是否以str为前缀 3.endsWith(String str): 判断字符串是否以str为后缀 4.String 字符串的比较: 1).compareTo()和compareToIgnore

JAVA的String 类【转】

String类 1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语言”; 其实按照面向对象的标准语法,其格式应该为: String s = new String(“abc”); s = new String(“Java语言”); 只是按照面向对象的标准语法,在内存使用上存在比较大的浪费.例如String s = new String(“abc”);