Java数据类型与运算符深入解析
立即解锁
发布时间: 2025-08-18 01:05:00 阅读量: 2 订阅数: 9 

### Java 数据类型与运算符深入解析
#### 1. 字符串操作与特性
在 Java 编程中,字符串是非常重要的数据类型。字符串在 Java 里是对象,且具有不可变的特性。这意味着一旦创建,字符串对象所包含的字符序列就不能被修改。不过,这并不影响我们灵活使用字符串,因为当需要一个与现有字符串有所不同的新字符串时,我们可以直接创建一个包含所需更改的新字符串对象。而且,Java 会自动对不再使用的字符串对象进行垃圾回收,所以我们无需担心废弃字符串的处理问题。
需要注意的是,虽然字符串对象本身不可变,但引用字符串的变量是可以改变其引用的对象的。例如下面的代码展示了如何修改字符串数组中的元素:
```java
// cambia una cadena
cads[1] = “fue”;
cads[3] = “prueba también!”;
System.out.println(“Matriz modificada: “);
for(String s : cads)
System.out.print(s + “ “);
```
运行结果为:
```plaintext
Matriz original:
Ésta es una prueba.
Matriz modificada:
Ésta fue una prueba, también!
```
当我们需要创建一个可以修改内容的字符串时,Java 提供了 `StringBuffer` 类。它创建的字符串对象是可以被修改的。例如,`StringBuffer` 除了有获取指定位置字符的 `charAt()` 方法外,还有设置指定位置字符的 `setCharAt()` 方法。不过,在大多数情况下,我们还是会使用 `String` 类。
另外,`String` 类的 `substring()` 方法也很好地体现了字符串的不可变特性。该方法会返回一个包含调用字符串特定部分的新字符串,而原字符串保持不变。其方法形式为:
```java
String substring(int índiceInicio, int índiceFinal)
```
其中,`índiceInicio` 指定起始索引,`índiceFinal` 指定结束索引。以下是一个示例代码:
```java
// Uso de substring().
class SubStr {
public static void main(String args[]) {
String cadorig = “Java hace que Web avance.”;
// construye una subcadena
String subcad = cadorig.substring(5, 18);
System.out.println(“cadorig: “ + cadorig);
System.out.println(“subcad: “ + subcad);
}
}
```
运行结果为:
```plaintext
cadorig: Java hace que Web avance.
subcad: hace la Web
```
#### 2. 命令行参数的使用
在 Java 程序中,`main()` 方法的参数 `args` 是一个字符串数组,它用于接收命令行参数。命令行参数是在程序执行时,紧跟在程序名后面的信息。我们可以很方便地在 Java 程序中访问这些命令行参数,它们被存储在传递给 `main()` 方法的字符串数组中。
下面是一个简单的示例程序,用于显示所有传入的命令行参数:
```java
// Despliega toda la información de línea de comandos.
class LCDemo {
public static void main(String args[]) {
System.out.println(“Hay “ + args.length +
“ argumentos de línea de comandos.”);
System.out.println(“Son: “);
for(int i=0; i<args.length; i++)
System.out.println(“arg[“ + i + “]: “ + args[i]);
}
}
```
如果我们以 `java LCDemo uno dos tres` 这样的方式运行该程序,输出结果将是:
```plaintext
Hay 3 argumentos de línea de comandos.
Son:
arg[0]: uno
arg[1]: dos
arg[2]: tres
```
可以看到,第一个参数存储在索引 0 处,第二个参数存储在索引 1 处,依此类推。
再看一个更实际的例子,下面的程序接收一个命令行参数,该参数指定一个人的姓名,然后在一个二维字符串数组中查找该姓名,如果找到匹配项,则显示该人的电话号码:
```java
// Un directorio telefónico simple automatizado.
class Telef {
public static void main(String args[]) {
String tels[][] = {
{ “Juan”, “5555-3322” },
{ “Mary”, “5555-8976” },
{ “Jaime”, “5555-1037” },
{ “Raquel”, “5555-1400” }
};
int i;
if(args.length != 1)
System.out.println(“Uso: java Telef <nombre>”);
else {
for(i=0; i<tels.length; i++) {
if(tels[i][0].equals(args[0])) {
System.out.println(tels[i][0] + “: “ +
tels[i][1]);
break;
}
}
if(i == tels.length)
System.out.println(“El nombre no se encuentra.”);
}
}
}
```
运行示例:
```plaintext
C>java Telef Mary
Mary: 5555-8976
```
#### 3. 位运算符的使用
Java 除了常见的算术、关系和逻辑运算符外,还提供了位运算符。位运算符直接对 `long`、`int`、`short`、`char` 和 `byte` 等整数类型的位进行操作。位运算在系统级编程中非常重要,常用于查询或构建设备的状态信息。
位运算符包括按位与(`&`)、按位或(`|`)、按位异或(`^`)和按位取反(`~`),它们与在布尔逻辑中使用的运算符类似,但位运算符是逐位操作的。以下是这些位运算符的真值表:
| p | q | p&q | p|q | p^q | ~p |
|----|----|----|----|----|----|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 0 |
按位与(`&`)运算符常用于禁用某些位。例如,任何一个操作数中为 0 的位会使结果中对应的位也为 0。以下是一个示例:
```plaintext
1 1 0 1 0 0 1 1
& 1 0 1 0 1 0 1 0
1 0 0 0 0 0 1 0
```
下面的程序展示了如何使用按位与运算符将小写字母转换为大写字母,通过将第六位设置为 0 来实现:
```java
// Letras mayúsculas.
class Mayus {
public static void main(String args[]) {
char ch;
```
0
0
复制全文
相关推荐









