龙空技术网

读《Java核心技术》---程序设计结构(字符串,输入输出,数组)

David8579 188

前言:

今天各位老铁们对“java字符串的输入”大概比较注重,兄弟们都需要分析一些“java字符串的输入”的相关资讯。那么小编也在网摘上搜集了一些对于“java字符串的输入””的相关知识,希望小伙伴们能喜欢,姐妹们快快来学习一下吧!

接着第三章的内容继续看:

字 符 串

Java 没有内置的字符串类型, 而是在标准 Java 类库中提供了 一个预定义类,很自然地叫做 String。每个用双引号括起来的字符串都是 String类的一个实例:

String e = ""; // an empty string

String greeting = "Hello";

子串(greeting.substring(0,3))、拼接:Java语言允许使用 + 号连接(拼接)两个字符串;

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

String all = String.join(" / ", "S", "M", "L", "XL"); // all is the string "S / H / L / X

不可变字符串

由于不能修改 Java 字符串中的字符, 所以在 Java 文档中将 String 类对象称为不可变字符串,当然, 可以修改字符串变量 greeting, 让它 引用另外一个字符串, 这就如同可以将存放 3 的数值变量改成存放 4 一样。

检测字符串是否相等

可以使用 equals 方法检测两个字符串是否相等。对于表达式: s.equals(t)。

String greeting = "Hello";if(greeting == "Hello")...//trueif(greeting.substring(0,3) == "Hel")//false

如果虚拟机始终将相同的字符串共享, 就可以使用=运算符检测是否相等。但实际上只有字符串常量是共享的,而 + 或 substring 等操作产生的结果并不是共享的

空串和null

要检查一个字符串是否为 null, 要使用以下条件: if (str == null&&str.length()!=0) 首先要检查 str 不为 null。 如果在一个 mill 值上调用方法, 会出现错误。

码点 和代码单元

Java 字符串由 char 值序列组成。 char 数据类型是一 个采用 UTF-16 编码表示 Unicode 码点的代码单元。

length 方法将返回采用 UTF-16 编码表示的给定字符串所需要的代码单元数量,例如: String greeting = "Hello"; int n = greeting.length。; // is 5 .

要想得到实际的长度,即码点数量,可以调用:

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

构建字符串

有些时候, 需要由较短的字符串构建字符串,使用 StringBuilder类:

首先, 构 建一个空的字符串构建器: StringBuilder builder = new StringBuilder(); 当每次需要添加一部分内容时, 就调用 append 方法。

builder.append(ch); // appends a single character

builder.append(str); // appends a string

在需要构建字符串时就凋用 toString 方法, 将可以得到一个 String 对象, 其中包含了构建器 中的字符序列。 String completedString = builder.toString();

读取输入

构造scanner对象,并与System.in相关联 ,注意:

在程序的最开始添加上一行:import java.util.*;Scanner in = new Scanner(System.in);System.out.println("what's your name?");String name = in.nextLine();//读取一个单词(以空白 符作为分隔符,) 就调用String firstname = in.next();// 要想读取一个整数, 就调用 nextlnt 方法System.out.println("how old are u?");int age = in.nextInt();

与此类似,要想读取下一个浮点数, 就调用 nextDouble() 方法

格式化输出

System.out.printf("%8.2f",x);

可以用 8 个字符的宽度和小数点后两个字符的精度打印x。也就是说,打印输出一个空格和7 个字符, 如下所示:

[]3333.33

文件输入与输出

要想对文件进行读取,就需要一个用 File 对象构造一个 Scanner 对象,如下所示:

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

如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠:

“ c:\\mydirectory\\myfile.txt ”

// 写入文件

PrintWriter out = new PrintWriter("myfile.txt","utf-8");

如果文件不存在,创建该文件。 可以像输出到 System.out—样使用 print、 println 以及 printf命令。

控 制 流 程

块作用域

不能在嵌套的两个块中声明同名的变量。例如,下面的代码就有错误,而无法通过编译: public static void main(String[] args)

{ int n;

{ i int k;

int n; // Error can't redefine n in inner block

} }

条件语句if()、循环语句while(),do{}while(),for()

在处理多个选项时, 使用 if/else 结构显得有些笨拙。 Java 有一个与 C/C++ 完全一样的 switch 语句。

// 多重选择:switch语句Scanner in = new Scanner(System.in);System.out.println("Select an option(1,2,3,4,5)");int choise = in.nextInt();switch (choise){	case 1:	...	break;	case 2:	...	break;	... 	... 	default: 	...//bad input 	break;}

case 标签可以是:

•类型为 char、byte、 short 或 int 的常量表达式。

•枚举常量。

•从 Java SE 7开始, case 标签还可以是字符串字面量

大数值

Biglnteger 和 BigDecimaL 这两个类可以处理包含任意长度数字序列的数值。 Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。

// 使用静态的 valueOf方法可以将普通的数值转换为大数值BigInteger a = BigInteger.valueOf(100);// 遗憾的是,不能使用人们熟悉的算术运算符(如:+ 和 *) 处理大数值。 而需要使用大数// 值类中的 add 和 multiply 方法。BigInteger c = a.add(b);BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)))//d=c*(b+2)

for each 循环

定义一个变量用于暂存集合中的每一个元素,并执行相应的语句(当然,也可以是语句块。collection这一集合表达式必须是一个数组或者是一个实现了 Iterable 接口的类对象(例如ArrayList)

for (int element : a)

System.out.println(element):

数组初始化以及匿名数组

int[] a = new int[100];for(int element : a){	System.out.println(element);}//创建数组并初始化int[] smallPrimes = {2,3,5,7,11,13};//初始化一个匿名数组new int[]{ 17,19,23,29,37}//允许数组长度为0new elementType[0]// // 数组拷贝int[] copiedLuckyNumbers = Array.copyOf(luckyNumbers,luckyNumbers.length);

命令行参数

每一个 Java 应用程序都有一个带 String arg[] 参数的 main 方法。这个参数表明main方法将接收一个字符串数组,也就是命令行参数。

public class Message{	public static void main(String[] args){		if(args.length == 0 || args[0].equals("-h")){			System.out.println("hello, ");		}else if(args[0].equals("-g")){			System.out.println("Goodbye.");		}		for(int i= 1; i<args.length;i++){			System.out.print(" " + args[i]);		}		SyStem.out.println("!");//Goodbye, cruel world!	}}

数组排序(Arrays.sort())

int[] a = new int[100];

Arrays.sort(a);

多维数组

在 Java 中, 声明一个二维数组相当简单。例如:

double[][] balances;

标签: #java字符串的输入