java核心技术卷I-字符串及输入输出

字符串

从概念上讲, Java 字符串就是 Unicode 字符序列

子串

String s = greeting.substring(0, 3);

拼接
Java语言允许使用 + 号连接(拼接)两个字符串

int age = 13;
String rating = "PC" + age;

Java 文档中将 String 类对象称为不可变字符串,优点是编译器可以让字符串共享

检验字符串是否相等

s.equals(t)

两个字符串是否相等,而不区分大小写

"Hello".equalsIgnoreCase("hel1o")

不要使用==运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串是否放置在同一个位置上,如果虚拟机始终将相同的字符串共享, 就可以使用但实际上只有字符串常量是共享的,而 +substring 等操作产生的结果并不是共享的

空 串与Null 串
空串 “” 是长度为 0 的字符串

if (str.length()== 0)
if (str.equals(""))

String 变量还可以存放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联

if (str == null)

要检查一个字符串既不是 null 也不为空串

if (str != null && str.length() != 0)

首先要检查 str 不为 null,在一个 null 值上调用方法, 会出现错误。

常用StringApi

char charAt (int index)

返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个
方法。

int codePointAt(int Index) 5.0

返回从给定位置开始的码点。

int offsetByCodePoints(int startlndex, int cpCount) 5.0

返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。

int compareTo(String other)

按照字典顺序,如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之后,返回一个正数;如果两个字符串相等,返回 0。

IntStream codePoints() 8

将这个字符串的码点作为一个流返回。调用 toArray 将它们放在一个数组中。

new String(int[] codePoints, int offset, int count) 5.0

用数组中从 offset 开始的 count 个码点构造一个字符串。

boolean equals(0bject other)

如果字符串与 other 相等, 返回 true。

boolean equalsIgnoreCase(String other )

如果字符串与 other 相等 ( 忽略大小写,) 返回 tme。

boolean startsWith(String prefix )
boolean endsWith(String suffix )

如果字符串以 suffix 开头或结尾, 则返回 true。

int indexOf(String str)
int indexOf(String str, int fromlndex )
int indexOf(int cp)
int indexOf(int cp, int fromlndex )

返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或fromlndex 开始计算。 如果在原始串中不存在 str,返回 -1。

int 1astIndexOf(String str)
Int 1astIndexOf(String str, int fromlndex )
int lastindexOf(int cp)
int 1astindexOf(int cp, int fromlndex )

返回与字符串 str 或代码点 cp 匹配的最后一个子串的开始位置。 这个位置从原始串尾端或 fromlndex 开始计算。

int length()

返回字符串的长度。

int codePointCount(int startlndex , int endlndex ) 5.0

返回 startlndex 和 endludex-l之间的代码点数量。没有配成对的代用字符将计入代码点。

String replace( CharSequence oldString,CharSequence newString)

返回一个新字符串。这个字符串用 newString 代替原始字符串中所有的 oldString。可以用 String 或 StringBuilder 对象作为 CharSequence 参数。

String substring(int beginlndex )
String substring(int beginlndex, int endlndex )

返回一个新字符串。这个字符串包含原始字符串中从 beginlndex 到串尾或 endlndex-l的所有代码单元。

String toLowerCase()
String toUpperCase()

返回一个新字符串。 这个字符串将原始字符串中的大写字母改为小写,或者将原始字符串中的所有小写字母改成了大写字母。

String trim()

返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。

String join(CharSequence delimiter, CharSequence ... elements ) 8

返回一个新字符串, 用给定的定界符连接所有元素。

构建字符串

StringBuilder builder = new StringBuilder();
bui1der.append(str); // appends a string
String completedString = builder.toString();

在 JDK5.0 中引入 StringBuilder 类。 这个类的前身是 StringBuffer, 其效率稍有些低, 但允许采用多线程的方式执行添加或删除字符的操作 U 如果所有字符串在一个单线程中编辑 (通常都是这样,) , 则应该用 StringBuilder 替代它。 这两个类的 AP丨是相同的。

StringBuilder 类api

StringBuilder()

构造一个空的字符串构建器。

int length()

返回构建器或缓冲器中的代码单元数量。

StringBuilder append(String str)

追加一个字符串并返回 this。

StringBuilder append(char c)

追加一个代码单元并返回 this。

StringBuilder appendCodePoint(int cp)

追加一个代码点,并将其转换为一个或两个代码单元并返回 this。

void setCharAt(int i ,char c)

将第 i 个代码单元设置为 c。

StringBuilder insert(int offset,String str)

在 offset 位置插入一个字符串并返回 this。

StringBuilder insert(int offset,Char c)

在 offset 位置插入一个代码单元并返回 this。

StringBuilder delete(int startindex,int endlndex)

删除偏移量从 startindex 到 -endlndex-1 的代码单元并返回 this。

String toString()

返回一个与构建器或缓冲器内容相同的字符串

输入输出

控制台输人

Scanner in = new Scanner(System.in);
String name = in.nextLine();//读取行可能包含空格,无视空格
String firstName = in.next();//读取以空格分隔的词
int age = in.nextlnt();//读取整数

因为输入是可见的, 所以 Scanner 类不适用于从控制台读取密码。Java SE 6 特别引入了 Console 类实现这个目的。要想读取一个密码

Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password:");

文件输入与输出
文件进行读取

Scanner in = new Scanner(Paths.get("niyflle.txt"), "UTF-8");

写入文件, 就需要构造一个 PrintWriter 对象

PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

局外人一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值