Java---String

Concept

String类代表着字符串。所有的Java程序中的String文字都会使用该类实例。

String类在创建后是不可改变的,所以一旦创建了String对象,它的值就无法改变了。如果需要对字符串进行很多修改,那么应该选择使用StringBuffer和StringBuilder类。

Java语言为String的连接符(+)和其他对象装换到String对象提供了特殊的支持。我们用toString的方法实现这些转换,在Object中定义,并被Java中所有的类继承。

创建String

String strs = "String";

创建String[]

一般创建String[]有两种方法

String[] strs = new String[]{"dog", "cat", "rat"};

String[] strs = new String[3];
strs[0] = "dog";
strs[1] = "cat";
strs[2] = "rat";

第一种是直接在括号内加入String对象。
第二种是先固定数组长度再逐一赋值。(如果存在没有赋值的元素,那么初始值为null,记住Java成员变量创建后是有默认值的)

Method

Java中的String类包含了50多种方法,并且绝大多数使用频率都很高。

TypeMethodSignificance
intcompareTo(String anotherString)按照词典顺序(ASCII)比较String的内容。大小写并不等价
Stringconcat(String str)返回一个新的String对象,内容为原始String接上参数String
booleancontains(CharSequence s)判断该String对象是否包含参数内容
booleancontentEquals(CharSequence cs/StringBuffer sb)判断String对象是否与参数一致
charcharAt(int index)取得String该索引位置上的char
booleanendsWith(String suffix)判断参数是否为该字符串的后缀
booleanequals(Object anObject)判断两个String内容是否相同
booleanequalsIgnoreCase(String another)判断两个String的内容相同,忽略大小写
intindexOf(char/String)如果该String并不包含此参数,就返回-1,否则返回参数在String中的起始索引
intlastIndexOf(char/String)同上。lastIndexOf()是从后往前搜索
Stringintern()为每个唯一的字符序列仅生成一个String引用
intlength()返回String长度
Stringreplace(char oldChar, char newChar)返回替换后的新String对象,如果没有替换发生,则返回原始String对象。参数也可以改为char序列
booleanstartsWith(String prefix)判断参数是否为该字符串的前缀
Stringsubstring(int beginIndex, [int endIndex])返回一个字符串子串对象
char[]toCharArray()生成一个char数组,包含String的所有字符
StringtoLowerCase()String字符转换为小写,返回转换后的对象
StringtoUpperCase()String字符转换为大写,返回转换后的对象
Stringtrim()将String两端的空白字符删除后,返回一个新的String对象。无改变则返回原对象
static StringvalueOf()参数可填boolean,char,char[],double,float,float,int,long,Object,都是返回一个表示参数内容的String

当需要改变字符串内容时,String类的方法都会返回一个新的String对象。同时,如果内容没有发生改变,String的方法只是返回指向原对象的引用而已。这可以节约存储空间以及避免额外的开销。

Example
public class test{
    public static void main(String args[]){

        char[] character = {'s', 't', 'r', 'i','n', 'g','s' };
        String strings = new String(character);
        System.out.println(strings);//strings
        //将char数组作为参数构造一个String对象
        System.out.println(strings.charAt(4));//n
        //返回String指定索引的char值
        char[] character2 = strings.toCharArray();
        System.out.println(character2 instanceof char[]);//true
        //将String转换为char[]
        String strings2 = "ring";
        System.out.println(strings.equals(strings2));//false
        System.out.println(strings.compareTo(strings2));//1
        System.out.println(strings.contains(strings2));//true
        //String对象间等同,比较,包含
        System.out.println(strings.startsWith("str"));//true
        System.out.println(strings.endsWith("s"));//true
        //判断String对象前缀后缀
        System.out.println(strings.indexOf("s"));//0
        System.out.println(strings.lastIndexOf("s"));//6
        //返回参数的索引,从前和从后搜索返回值不一样
        String strings3 = strings.concat(strings2);
        System.out.println(strings3);//stringsring
        System.out.println(strings3.replace("r","w"));//stwingswing
        System.out.println(strings3.toUpperCase());//STRINGSRING
        //连接两个字符串,替换字符串中指定字母,转换大小写
        String strings4 = "  space  ";
        System.out.println(strings4);//  space
        System.out.println(strings4.trim());//space
        //删除前后空白字符

    }
}

String方法的确很多,经常使用即可记住。

空格,空对象,空格(20.4.5)
	String s = null;
  1. 空对象是指定义一个对象,但是没有给该对象分配空间,即没有实例化该对象。因此,空对象在调用任何对象方法的时候都会抛出异常,如s.length(),s.isEmpty()等方法。
  2. 判断空对象用s==null,因为未实例化,不能用equals(),isEmpty()等方法。
	String s = "";
  1. 空值是指一个字符串对象已经实例化,系统已经给该变量分配了空间,只是对象的内容为空。
  2. 判断空值有三种方法 (1)比较两对象内容是否相同 s.equals("");(2) 查看字符串对象字符个数 s.length()==0;(3) 判断字符串对象字符个数是否为0 s.isEmpty()
	String n = " ";
  1. 空格是指一个字符对象已经实例化,对象的内容是空格。虽然在输出显示的时候跟空值是一样的,都是空值,但是在系统内面的内存机制是不一样的,对象内存空间里面有内容是空格,字符个数为1。
  2. 判断空格用s.equals(" ")。用对象方法的输出: s.length()的输出值为1,s.isEmpty()输出为false
String Char值相等比较(20.4.7)

String比较用equals方法

		String a = "abc";
        String b = "abc";
        String c = new String("abc");
        String d = new String("abc");
        System.out.println( a == b);//true
        System.out.println( c == d);//false
        System.out.println( a.equals(b));//true
        System.out.println( c.equals(d));//true
  1. a b同一字符串引用 是同一对象地址 用"=="号返回true equals比较字符串的值相等
  2. c d 为不同对象 字符串值相等 地址不同 用等号不相等 equals比较值 不考虑地址 所以相等
  3. char只能用 "=="进行比较
String 与 Char之间的转换
String转换为char
  1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。
  2. 使用String.toCharArray()(返回值为char[])可以得到将包含整个String的char数组。这样我们就能够使用从0开始的位置索引来访问string中的任意位置的元素。
Char转换为String
  1. String s = String.valueOf(‘c’); //效率最高的方法
  2. String s = String.valueOf(new char[]{‘c’}); //将一个char数组转换成String
  3. String s = Character.toString(‘c’);
  4. String s = new Character(‘c’).toString();
  5. String s = new String(new char[]{‘c’});
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java-diff-utils是一个用于计算和应用文本文件之间差异的Java库。它提供了一组算法和工具,可以比较两个文本文件并生成差异结果。这些差异结果可以用于生成补丁文件,也可以直接应用于原始文件以生成目标文件。 以下是java-diff-utils的一些主要功能和用法示例: 1. 比较两个文本文件的差异: ```java import difflib.DiffUtils; import difflib.Patch; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.List; public class DiffExample { public static void main(String[] args) throws IOException { File originalFile = new File("path/to/original/file.txt"); File modifiedFile = new File("path/to/modified/file.txt"); List<String> originalLines = Files.readAllLines(originalFile.toPath(), StandardCharsets.UTF_8); List<String> modifiedLines = Files.readAllLines(modifiedFile.toPath(), StandardCharsets.UTF_8); Patch<String> patch = DiffUtils.diff(originalLines, modifiedLines); for (String line : patch.getDeltas()) { System.out.println(line); } } } ``` 2. 生成补丁文件: ```java import difflib.DiffUtils; import difflib.Patch; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.List; public class PatchExample { public static void main(String[] args) throws IOException { File originalFile = new File("path/to/original/file.txt"); File modifiedFile = new File("path/to/modified/file.txt"); File patchFile = new File("path/to/patch/file.patch"); List<String> originalLines = Files.readAllLines(originalFile.toPath(), StandardCharsets.UTF_8); List<String> modifiedLines = Files.readAllLines(modifiedFile.toPath(), StandardCharsets.UTF_8); Patch<String> patch = DiffUtils.diff(originalLines, modifiedLines); FileWriter writer = new FileWriter(patchFile); patch.toUnifiedDiff().forEach(line -> { try { writer.write(line + "\n"); } catch (IOException e) { e.printStackTrace(); } }); writer.close(); } } ``` 请注意,上述示例中的文件路径需要根据实际情况进行替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值