首页 > 编程语言 > 详细

第3章 Java的基本程序设计结构

时间:2020-03-05 00:47:41      阅读:120      评论:0      收藏:0      [点我收藏+]

3.1 一个简单的Java应用程序

public class FirstSample {
    public static void main(String[] args) {
        System.out.prinln("Hello, world!");
    }
}
  1. Java区分大小写。
  2. Java应用程序中的全部内容都必须放置在类中。
  3. 类名是以大写字母开头的名词,使用驼峰命名法。
  4. 源文件的文件名必须与公共类的名字相同,并用.java作为扩展名。
  5. main方法必须声明为public,且是静态的(static)。
  6. 如果希望main方法在终止程序时返回其他的代码,那就需要调用System.exit方法。

3.2 注释

在Java中,有三种标记注释的方法:

  • //
  • /* */
  • /** */

3.3 数据类型

在Java中,一共有8种基本类型,包括4整数型、2中浮点型、1中字符类型和1中布尔类型。

类型 存储需求 取值范围
int 4字节 -2147483648 ~ 2147483647 (正好超过20亿)
short 2字节 -32768 ~ 32767
long 8字节 -9223372036854775808 ~ 9223372036854775807L
byte 1字节 -128 ~ 127
float 4字节 大约 ±3.40282347E+38F(有效位数为6~7位)
double 8字节 大约 ±1.79769313486231570E+308(有效位数15位)
char 2字节
boolean 1bit
  1. 长整型数值有一个后缀L或l。
  2. 0x表示十六进制,0表示八进制,0b表示二进制。
  3. 可以位数字字面量加下画线,如1_0000_0000
  4. Java没有无符号类型的整型
  5. float类型的数值有一个后缀F或f。
  6. 浮点数值不适用于无法接受舍入误差的金融计算中,因为浮点数值采用二进制系统表示,无法精确地表示分数1/10。如果不允许有任何舍入误差,就应该使用BigDecimal类。
  7. 在Java中,char类型描述了UTF-16编码中地一个代码单元。
  8. 整数值和布尔值之间不能进行相互转换

3.4 变量

  1. 可以使用Character类的isJavaIdentifierStartisJavaIdentifierPart方法来检验哪些Unicode字符属于Java中的“字母”。
  2. 声明变量后,必须使用赋值语句对变量进行显示初始化,使用未初始化的变量会报错。
  3. 在Java中可以将声明放在代码中的任何地方。一般变量的声明应尽可能地靠近变量第一次使用的地方。
  4. C/C++中区分变量的声明与定义,Java中不区分变量的声明与定义。
  5. Java中,利用关键字final指示常量。习惯上,常量名使用全大写。
  6. 可以使用关键字static final设置一个类常量,这个常量可以在该类的多个方法中使用。类常量的定义位于main方法的外部。如果同时声明为public,那么其他类的方法也可以使用这个方法。

3.5 运算符

  1. 当参与/运算的两个操作数都是整数时,表示整数除法;否则,表示浮点数除法。

  2. 整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。

  3. 使用strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。

  4. Math类包含多种数学函数:

    运算操作 方法
    求平方根 sqrt
    求整数余数 floorMod
    三角函数 sincostanatanatan2
    常量 PIE
  5. 数据类型之间的转换:

    技术分享图片

    • 图中,实心箭头表示无信息丢失的转换,虚箭头表示可能有精度损失的转换。

      两个数值进行二元操作时:

    • 如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。

    • 否则, 如果其中一个操作数是 float 类型, 另一个操作数将会转换为 float 类型。

    • 否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。

    • 否则, 两个操作数都将被转换为 int 类型。

  6. 强制类型转换:

    double x = 9.9997;
    int nx = (int) x;

    对浮点数进行舍入运算,需要使用Math.round方法:

    double x = 9.997;
    int nx = (int) Math.round(x);

    此时仍使用强制类型转换,是因为round方法返回的值为long类型。

  7. 不要在boolean类型与任何数值类型之间进行强制类型转换。如果确要转换,可以使用条件表达式b?1:0

  8. >>是算数移位(扩展符号位),>>>是逻辑移位(填充0),不存在<<<运算符。

  9. Java中不适用逗号运算符。不过可以在for语句的第1部分和第3部分中使用逗号分隔表达式列表。

3.6 字符串

  1. Java没有内置的字符串类型,而是在标准类库中提供了一个预定义类String

3.7 输入与输出

  1. 要想通过控制台进行输入,首先需要构造一个与“标准输入流”System.in关联的Scanner对象。

    Scanner in = new Scanner(System.in);

    之后可以使用nextLine、next、nextInt、nextDouble等方法读取输入数据。

    Scanner类定义在java.util包中,使用时必须用import指令导入。

  2. 格式化输出使用System.out.printf()

  3. 要想读取一个文件,需要构造一个Scanner对象:

    Scanner in = new Scanner(Path.of("C:\\mydir\\myfile.txt"), StandardCharsets.UTF_8);

    要想写入文件,就需要构造一个PrintWriter对象,如果文件不存在,则创建该文件。

    PrintWriter out = new PrintWriter(Path.of("C:\\mydir\\myfile.txt"), StandardCharsets.UTF_8);

    如果用一个不存在的文件构造一个Scanner,或者用一个无法创建的文件名构造一个PrintWriter,编译器会报出异常,并且认为这些异常比“被零除”异常更严重。

  4. 获取IDE中的程序启动目录:

    String dir = System.getProperty("user.dir");

3.8 控制流程

  1. Java中没有goto语句,但break语句可以带标签,可以利用它从内层循环挑出。标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号。

    使用break语句的代码,需要检测循环是正常结束,还是由break跳出。

  2. for语句的3个部分应该对同一个计数器变量进行初始化、检测和更新。

3.9 大数

  1. java.math包中的两个类BigIntegerBigDecimal,可以处理包含任意长度数字序列的数值。

3.10 数组

  1. 声明数组

    int[] a = new int[100];      // 数组长度可以是变量
    int[] smallPrimes = {2, 3, 5, 7, 11, 13, };      // 最后一个值后面允许有逗号,方便继续添加
    smallPrimes = new int[] {17, 19, 23, 29, 31, 37, };  // 使用匿名数组重新初始化一个数组而无须创建新变量
    
    int[] a = new int[0];    // java中允许长度为0的数组
    int[] b = new int {};

    如果经常扩展数组的大小,应该使用数组列表(array list)。

  2. 创建一个数字数组时,所有元素都初始化为0。boolean数组的元素会初始化为false。对象数组的元素会初始化为一个特殊值null

  3. 越界访问数组会引发array index out of bounds异常。

  4. for each循环:

    for (int element : a)
        System.out.println(element);
  5. 可以利用Arrays类的toString方法,将数组转换为字符串,然后打印。

  6. int[] luckyNumbers = smallPrimes;    // 两个变量将引用同一个数组
    int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length); // 拷贝到一个新的数组
    luckyNumbers = Arrays.copyOf(luckyNumbers, 2 * luckyNumbers.length); // 增加数组大小
  7. 每一个Java应用程序都有一个带String args[]参数的main方法。注意程序名并没有存储在args[]数组中。

  8. Arrays类中的sort方法使用优化的快速排序算法。

  9. Math.random方法将返回一个0到1之间(包含0、不包含1)的随机浮点数。

  10. Java中可以使用多维数组,和不规则数组。多维数组实际被解释为“数组的数组”。

    int[][] a = new int[3][6];  // 二维数组
    
    for (int[] row : a)         // for each 打印二维数组
        for (int value : row)
        {}
    
    System.out.println(Arrays.deepToString(a));     // 快速实现打印多维数组

第3章 Java的基本程序设计结构

原文:https://www.cnblogs.com/harr/p/12416911.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!