基础程序设计篇

布尔类型

  • Java中,布尔值并不能转换成为数字,数字也不能转化为布尔;
  • 枚举类在第5章的时候介绍;声明的时候enum关键词;

字符串

  • Java字符串并不是字符型数组

    1
    char greeting[]="Hello"

    这种认识是错误的,Java字符串大致类似于char*指针

    1
    char* greeting="Hello"
  • 空串是长度为0,内容为空的字符串;null串目前没有任何对象与该对象关联;更多请看第四章

  • String类的一些常用方法

检测两个字符串是否相等

  1. 区分大小写”Hello”.equals(greetintg)
  2. 不区分大小写”Hello”.equalsIgnoreCase(“hello”)
  3. 不能用==来判断,这样对比的是存储位置,而不是具体的值;

其他

  1. char charAt(inr index)
    返回指定位置的字符
  2. int compareTo(String other)
    按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之前,返回一个正数,相等返回0;
  3. boolean equals(Object other)
  4. int indexOf(String str)
    返回与字符串str或代码点cp匹配的第一个字串开始的位置。位置从0开始计算;
  5. String substring( int beginlndex, int endlndex )
    返回一个新字符串。这个字符串包含原始字符串中从beginlndex 到串尾或endlndex-l的所有代码单元。

StringBuilder

如果需要用许多小段的字符串构建一个字符串, 那么应该按照下列步骤进行。
首先, 构建一个空的字符串构建器:

1
StringBuilder builder = new StringBuilderO;

当每次需要添加一部分内容时, 就调用append 方法。

1
2
builder.append(ch); // appends a single character
bui1der.append(str); // appends a string

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

输入与输出

  1. 可见输入与不可见输入

    1
    2
    //可见输入
    Scanner in = new Scanner(System.in);

    nextLine 方法将输入一行。

    1
    2
    System.out.print("What is your name? ");
    String name = in.nextLine();

    在这里,使用nextLine 方法是因为在输人行中有可能包含空格。要想读取一个单词(以空白符作为分隔符),就调用

    1
    String firstName = in.nextO;

    要想读取一个整数, 就调用nextlnt 方法。

    1
    2
    System.out.print("How old are you? ");
    int age = in.nextlntO;

    因为输入是可见的, 所以Scanner 类不适用于从控制台读取密码。Java SE 6 特别引入了Console 类实现这个目的。要想读取一个密码, 可以采用下列代码:

    1
    2
    3
    Console cons = System.console();
    String username = cons.readLine("User name: ");
    cha「[] passwd = cons.readPassword("Password:");

    为了安全起见, 返回的密码存放在一维字符数组中, 而不是字符串中。在对密码进行处理之后, 应该马上用一个填充值覆盖数组元素

流程控制

  • 块作用域
    c++支持在嵌套的块中声明同一变量,但是Java不允许这么做

数组

  1. 声明并创建一个数组

    1
    int[] a = new int[100];

    创建一个数字数组时, 所有元素都初始化为0。boolean 数组元素会初始化为false,对象数组的元素则初始化为一个特殊值null, 这表示这些元素(还)未存放任何对象。初学者对此可能有些不解。例如,

    1
    String[] names = new String[10];

    会创建一个包含10 个字符串的数组, 所有字符串都为null。

  2. 打印数组中元素
    可以利用toString()方法,转化为字符串直接输出;
    也可以利用循环一个个打印

  3. 拷贝数组
    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得到数组的下一个元素。

  4. 多维数组
    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++