您当前的位置:首页 > 互联网教程

java 特殊符号输出 绝对基础

发布时间:2025-05-25 12:11:30    发布人:远客网络

java 特殊符号输出 绝对基础

一、java 特殊符号输出 绝对基础

1.八进制转义序列:\+ 1到3位5数字;范围'\000'~'\377'

2.Unicode转义字符:\u+四个十六进制数字;0~65535

======================================================================

下面的程序使用了两个Unicode的转义字符,它们是用其十六进制代码来表示Unicode字符。那么,这个程序会打印什么呢?

public static void main(String[] args){

//\u0022是双引号的Unicode转义字符

System.out.println("a\u0022.length()

public static void main(String[] args){

//\u0022是双引号的Unicode转义字符

System.out.println("a\u0022.length()

对该程序的一种很肤浅的分析会认为它应该打印出26,因为在由两个双引号"a\u0022.length()+\u0022b"标识的字符串之间总共有26个字符。

稍微深入一点的分析会认为该程序应该打印16,因为两个Unicode转义字符每一个在源文件中都需要用6个字符来表示,但是它们只表示字符串中的一个字符。因此这个字符串应该比它的外表看其来要短10个字符。如果你运行这个程序,就会发现事情远不是这么回事。它打印的既不是26也不是16,而是2。

理解这个谜题的关键是要知道:Java对在字符串字面常量中的Unicode转义字符没有提供任何特殊处理。编译器在将程序解析成各种符号之前,先将Unicode转义字符转换成为它们所表示的字符[JLS 3.2]。因此,程序中的第一个Unicode转义字符将作为一个单字符字符串字面常量("a")的结束引号,而第二个Unicode转义字符将作为另一个单字符字符串字面常量("b")的开始引号。程序打印的是表达式"a".length()+"b".length(),即2。

如果该程序的作者确实希望得到这种行为,那么下面的语句将要清楚得多:

System.out.println("a".length()+"b".length());

更有可能的情况是该作者希望将两个双引号字符置于字符串字面常量的内部。使用Unicode转义字符你是不能实现这一点的,但是你可以使用转义字符序列来实现[JLS 3.10.6]。表示一个双引号的转义字符序列是一个反斜杠后面紧跟着一个双引号(\”)。如果将最初的程序中的Unicode转义字符用转义字符序列来替换,那么它将打印出所期望的16(错误,应该是14,不知道是怎么会出来16):

System.out.println("a\".length()+\"b".length());

许多字符都有相应的转义字符序列,包括单引号(\')、换行(\n)、制表符(\t)和反斜线(\\)。你可以在字符字面常量和字符串字面常量中使用转义字符序列。

实际上,你可以通过使用被称为八进制转义字符的特殊类型的转义字符序列,将任何ASCII字符置于一个字符串字面常量或一个字符字面常量中,但是最好是尽可能地使用普通的转义字符序列。

普通的转义字符序列和八进制转义字符都比Unicode转义字符要好得多,因为与Unicode转义字符不同,转义字符序列是在程序被解析为各种符号之后被处理的。

ASCII是字符集的最小公共特性集,它只有128个字符,但是Unicode有超过65,000个字符。一个Unicode转义字符可以被用来在只使用ASCII字符的程序中插入一个Unicode字符。一个Unicode转义字符精确地等价于它所表示的字符。

Unicode转义字符被设计为用于在程序员需要插入一个不能用源文件字符集表示的字符的情况。它们主要用于将非ASCII字符置于标识符、字符串字面常量、字符字面常量以及注释中。偶尔地,Unicode转义字符也被用来在看起来颇为相似的数个字符中明确地标识其中的某一个,从而增加程序的清晰度。

总之,在字符串和字符字面常量中要优先选择的是转义字符序列,而不是Unicode转义字符。Unicode转义字符可能会因为它们在编译序列中被处理得过早而引起混乱。不要使用Unicode转义字符来表示ASCII字符。在字符串和字符字面常量中,应该使用转义字符序列;对于除这些字面常量之外的情况,应该直接将ASCII字符插入到源文件中。

二、java中如何截取特殊字符串

给你推荐java字符串截取的三种方法:

split()+正则表达式来进行截取。

将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。

2.通过subString()方法来进行字符串截取。

subString通过不同的参数来提供不同的截取方式

将字符串从索引号为2开始截取,一直到字符串末尾。(索引值从0开始);

从索引号2开始到索引好4结束(并且不包含索引4截取在内,也就是说实际截取的是2和3号字符);

StringUtils.substringBefore(“dskeabcee”,“e”);

StringUtils.substringBeforeLast(“dskeabcee”,“e”)

三、java的转义字符

在Java中,转义字符用于表示具有特殊含义的字符,如换行符、制表符等。这些转义字符在字符串中表示为特殊符号序列,用于插入特殊字符或执行特定操作。以下是Java中常见的转义字符及其含义:

1. \n:换行符,表示新的一行。在输出时,插入此字符会在当前位置开始新的一行。

2.\t:制表符,表示一个tab键。在输出时,插入此字符会在当前位置添加一个制表符空格。

3.\r:回车符,使光标回到行首而不换到新行。但在Java中一般不使用此转义字符,因为它与大多数编程环境和终端行为的约定不一致。

4.\f:换页符,主要用于垂直分页纸张控制和格式化输出。在现代编程环境中很少使用。

5.\":双引号字符的转义形式。在字符串中表示实际的双引号字符。这对于字符串内部包含双引号的情况很有用。

6.\\:反斜杠字符的转义形式。主要用于表示反斜杠自身或在字符串中表示其他反斜杠引导的转义字符。

在Java编程中,字符串中的某些字符具有特殊含义,例如双引号用于标识字符串的开始和结束。当需要在字符串内部表示这些特殊字符时,就需要使用转义字符。转义字符以反斜杠开始,后跟特定的字符序列来表示特定的意义。例如,为了在字符串中表示双引号字符而不结束字符串,可以使用转义字符"\"来表示实际的双引号字符。同样地,换行符、制表符等也都有对应的转义字符形式,它们在输出时具有特殊的显示或控制效果。这些转义字符使得在Java中处理包含特殊字符的字符串更为方便和直观。了解这些转义字符对于编写清晰、可读的Java代码非常重要。