Java的基本程序设计结构总结(第二部分)

Java的基本程序设计结构

本文推荐具有C语言基础的、耐心的同学进行阅读,本文中省略了部分与C语言相同的知识点,想要深入学习Java的同学请点这里 |->我是链接

本文分为三个部分,这是第二部分,作者欢迎纠错,但拒绝人身攻击。
我爱Python
单击此处查看第一部分 |->我还是链接

三、字符串

1. 子串

String 类的 substring 方法可以从一个较大的字符串中提取出一个子串。
例:

String greeting = "Hello";
String s = greeting.substring(0, 3);
//创建了一个由字符 “Hel” 组成的字符串

注意:substring 的第二个参数是不想复制的第一个位置,起始复制位置为0 。
substring 的工作方式有一个优点,易于计算子串的长度。

2. 拼接

Java 允许使用 + 进行拼接。

String expletive = "Expletive";
String PG13 = "deleted";
String message = expletive + PG13;
//拼接成 Expletivedeleted

当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串。

任何一个 Java 对象都可以转换成字符串。

这种特性通常用在输出语句中,例:

 System.out.println("The answer is " + answer);
 //这是一条合法的语句,并且将会打印出所希望的结果。

如果需要把多个字符串放在一起,用一个定界符分隔,可以使用静态 join 方法:

String all = String.join("/","S","M","L","XL");

3. 不可变字符串

由于 String 类没有提供用于修改字符串的方法,在进行修改时,只能将被修改字符串的前某个部分提取出来,再拼接自己想要添加的部分。
由于不能修改字符串中某个指定字符,String 类对象被称为不可变字符串,可以更改变量中存储的字符串,但是不能修改其中任何一个字符。

4. 检测字符串是否相等

可以使用 equals 方法检测两个字符串是否相等。例:
s.equals(t)
如果字符串 s 与字符串 t 相等,则返回 true ;否则,返回 false。需要注意,s 与 t可以是字符串变量,也可以是字符串。
要想检测两个字符串是否相等,而不区分大小写,可以使用 equalsIgnoreCase 方法。
不能使用 == 运算符检测两个字符串是否相等!这个运算符只能确定两个字符串是否放置在同一个位置上。

5. 空串与 Null 串

空串是长度为0的字符串。可以调用以下代码检查一个字符串是否为空。

if (str.length() == 0)
//或者
if (str.equals(""))

空串是一个 Java 对象,有自己的串长度和内容。

Null是一个特殊的值,表示目前没有任何对象与该变量关联。可以调用以下代码检查一个字符串是否为 null 。

if (str == null)
//有时候要检查一个字符串既不是 null 也不为空串
if(str != null && str.length() != 0)

先检查 null

6. 码点与代码单元

Java 字符串由 char 值序列组成。char 数据类型是一个采用 UTF-16 编码表示 Unicode 码点的代码单元。大多数的常用 Unicode 字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。

length 方法将返回采用 UTF-16 编码表示的给定字符串所需要的代码单元数量。
要想得到实际的长度即码点数量,可以调用以下语句:

String greeting = "Hello";
int cpCount = greeting.codePointCount(0, greeting.length());

调用 s.charAt(n) 将返回位置 n 的代码单元,n 介于 0 ~ 长度-1 之间。
要想得到第 i 个码点,可以使用下列语句:

int index = greeting.offsetByCodePoints(0, i);
int cp = greeting.codePointAt(index);

如果想遍历一个字符串,并且依次查看每一个码点,可以使用下列语句

int cp = sentence.codePointAt(i);
if (Character.isSupplementaryCodePoint(cp)) i += 2;
else i++;
//调换顺序。可以进行回退操作

7. String API

详细内容请点击右侧链接阅读联机 API 文档 |->https://docs.oracle.com/javase/8/docs/api/index.html

四、输入输出

1. 读取输入

读取标准输入流时,首先需要构建一个 Scanner 对象,并与标准输入流相关联。

Scanner in = new Scanner(System.in);

构建之后,就可以使用 Scanner 类的各种方法实现输入操作了。
在输入时,空格依旧作为分隔符。

String name = in.nextLine();
//防止输入行中含有空格影响输入
String firstname = in.next();

int age = in.nextInt();
//读取一个整数
double score = in.nextDouble();
//读取一个浮点数

不要忘记调用 java.util 包

import java.util.*;
//写在顶部

2. 格式化输出

与C语言类似。。。

用于 printf 的转换符

转换符类型举例
d十进制整数180
x十六进制整数9f
o八进制整数237
f定点浮点数15.9
e指数浮点数1.59e+01
g通用浮点数
a十六进制浮点数0x1.fccdp3
s字符串Hello
c字符H
b布尔True
h散列码42628b2
%百分号%
n与平台有关的行分隔符

还可以给出控制格式化输出的各种标志

标志目的
,添加分组分隔符
#(对于 f 格式)包含小数点
#(对于 x 或 0 格式)添加前缀 0x 或 0
$给定被格式化的参数索引。例如以某进制打印第 n 个参数
<格式化前面说明的数值

3. 文件输入与输出

  • 文件读取
    用一个 File 对象构造一个 Scanner 对象,代码如下:
Scanner in = new Scanner(Paths.get("myfile.txt"),"UTF-8");
//如果文件名中包含一个反斜杠,绝对路径中应该增加一个

构造一个 PrintWriter 对象。

PrintWriter out = new PrintWriter("myfile.txt","UTF-8");
//如果文件不存在,创建该文件

文件定位:
当使用集成开发环境时,使用下列语句定位文件位置:
String dir = System.getProperty("user.dir");

To be continued…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值