基础程序设计篇
布尔类型
- Java中,布尔值并不能转换成为数字,数字也不能转化为布尔;
- 枚举类在第5章的时候介绍;声明的时候enum关键词;
字符串
Java字符串并不是字符型数组
1
char greeting[]="Hello"
这种认识是错误的,Java字符串大致类似于char*指针
1
char* greeting="Hello"
空串是长度为0,内容为空的字符串;null串目前没有任何对象与该对象关联;更多请看第四章
String类的一些常用方法
检测两个字符串是否相等
- 区分大小写”Hello”.equals(greetintg)
- 不区分大小写”Hello”.equalsIgnoreCase(“hello”)
- 不能用==来判断,这样对比的是存储位置,而不是具体的值;
其他
- char charAt(inr index)
返回指定位置的字符 - int compareTo(String other)
按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之前,返回一个正数,相等返回0; - boolean equals(Object other)
- int indexOf(String str)
返回与字符串str或代码点cp匹配的第一个字串开始的位置。位置从0开始计算; - String substring( int beginlndex, int endlndex )
返回一个新字符串。这个字符串包含原始字符串中从beginlndex 到串尾或endlndex-l的所有代码单元。
StringBuilder
如果需要用许多小段的字符串构建一个字符串, 那么应该按照下列步骤进行。
首先, 构建一个空的字符串构建器:
1 | StringBuilder builder = new StringBuilderO; |
当每次需要添加一部分内容时, 就调用append 方法。
1 | builder.append(ch); // appends a single character |
在需要构建字符串时就凋用toString 方法, 将可以得到一个String 对象, 其中包含了构建器
中的字符序列。
String completedString = builder.toStringO ;
输入与输出
可见输入与不可见输入
1
2//可见输入
Scanner in = new Scanner(System.in);nextLine 方法将输入一行。
1
2System.out.print("What is your name? ");
String name = in.nextLine();在这里,使用nextLine 方法是因为在输人行中有可能包含空格。要想读取一个单词(以空白符作为分隔符),就调用
1
String firstName = in.nextO;
要想读取一个整数, 就调用nextlnt 方法。
1
2System.out.print("How old are you? ");
int age = in.nextlntO;因为输入是可见的, 所以Scanner 类不适用于从控制台读取密码。Java SE 6 特别引入了Console 类实现这个目的。要想读取一个密码, 可以采用下列代码:
1
2
3Console cons = System.console();
String username = cons.readLine("User name: ");
cha「[] passwd = cons.readPassword("Password:");为了安全起见, 返回的密码存放在一维字符数组中, 而不是字符串中。在对密码进行处理之后, 应该马上用一个填充值覆盖数组元素
流程控制
- 块作用域
c++支持在嵌套的块中声明同一变量,但是Java不允许这么做
数组
声明并创建一个数组
1
int[] a = new int[100];
创建一个数字数组时, 所有元素都初始化为0。boolean 数组元素会初始化为false,对象数组的元素则初始化为一个特殊值null, 这表示这些元素(还)未存放任何对象。初学者对此可能有些不解。例如,
1
String[] names = new String[10];
会创建一个包含10 个字符串的数组, 所有字符串都为null。
打印数组中元素
可以利用toString()方法,转化为字符串直接输出;
也可以利用循环一个个打印拷贝数组
C++ 注释: Java 数组与C++ 数组在堆栈上有很大不同, 但基本上与分配在堆(heap) 上的数组指针一样。也就是说,1
int[] a = new int[100]; // Java
不同于
1
int a[100]; // C++
而等同于
1
int* a = new int[100]; // C++
注意:Java 中的[ ]运算符被预定义为检查数组边界,而且没有指针运算,即不能通过a加1得到数组的下一个元素。
多维数组
Java 实际上没有多维数组, 只有一维数组。多维数组被解释为“ 数组的数组。”
C++ 注释: 在C++ 中, Java 声明1
doublet] [] balances = new double[10] [6]; // 3ava
不同于
1
double balances[10] [6] ; // C++
也不同于
1
double (*balances) [6] = new double[10] [6] ; // C++
而是分配了一个包含10 个指针的数组:
1
double** balances = new double*[10]; // C++