CORE JAVA 第3章 基本程序设计结构

3.1 引例

  • Java应用程序中的全部内容都必须放置在类中;
  • 源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。
    编译源代码后会得到一个包含这个类字节码的文件。Java编译器将字节码文件自动地命名为xx.class,并与源文件储存在同一个目录下。
  • main方法必须声明为public

3.2 注释

  • //
  • /* …… */ ,不能嵌套。
  • /** …… */ ,可自动生成文档。

3.3 数据类型

Java是强类型语言,共有八种基本类型。

  • 整型
  1. int 4字节 -2147483638 ~ 2147483647
  2. short 2字节 -32768 ~ 32767
  3. long 8字节 -9223372036854775808 ~ 9223372036854775807
  4. byte 1字节 -128 ~ 127

长整型数值后有一个后缀L或l,十六进制数值有一个前缀0x或0X,八进制有一个前缀0。
加上前缀0b或者0B就可以写二进制数。

  • 浮点类型
  1. float 4字节 有效位数为6 ~ 7位
  2. double 8字节 有效位数为15位

float类型的数值有一个后缀F或f。

// 不能这样检测一个特定值是否等于Double.NaN:
if (x == Double.NaN) // is never true
// 可以使用Double.isNaN方法:
if (Double.isNaN(x)) // check whether x is "not a number"

浮点数值不适用于无法接受舍入误差的金融计算中。

  • char类型

有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值。
char类型的字面量值要用单引号括起来。
char类型的值可以表示为十六进制值。

- ! 
  转义序列
  \u
  • boolean类型

有两个值,false和true,整型值和布尔值之间不能相互转换。

3.4 变量

  • 声明变量
double salary;

不要在代码中使用$,不能使用保留字作为变量名。

  • 变量初始化
  • 常量

关键字final指示常量。
常量只能被赋值一次,一旦被赋值后,就不能再更改。

类常量:static final
类常量的定义在方法的外部。

3.5 运算符

如果将一个类标记为strictfp,这个类中的所有方法都要使用严格的浮点计算。

  • 数学函数与常量
    Math库
  • 数值类型间的转换和强制类型转换
// 强制类型转换
double x =9.997;
int nx = (int) x;
  • 位运算符

  • 括号与运算符级别

  • 枚举类型

// 自定义枚举类型
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };
Size s = Size.MEDIUM;
// Size类型的变量只能存储这个类型声明中给定的某个枚举值,或null值。

3.6 字符串

Java字符串就是Unicode字符序列。
Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类String。
每个用双引号括起来的字符串都是String类的一个实例。

  • 子串
    String类的substring方法。

  • 拼接

  1. +号
  2. 把多个字符串放在一起,用一个定界符分隔,使用静态join方法:
String all = String.join("/","S","M","L");
//all is the string "S/M/L".
  • 不可变字符串

  • 检测字符串是否相等

s.equals(t)
//return true or false
//s与t可以是字符串变量,也可以是字符串字面量

不要使用"=="

  • String API

让浏览器指向安装jdk的docs/api/index.html子目录

  • 构建字符串

StringBuilder类

StringBuilder builder = new StringBuilder();

builder.append(ch);
builder.append(str);

String completedString = builder.toString():

3.7 输入输出

  • 读取输入
import java.util.*;

Scanner in = new Scanner(System.in);

String str = in.nextLine();
int age = in.nextInt():
  • 格式化输出
    System.out.printf();

  • 文件输入与输出

3.8 控制流程

  • 带标签的break

3.9 大数值

java.math.BigInteger和java.math.BigDecimal

BigInteger a = BigInteger.valueOf(100);

BigInteger c =a.add(b);
BigInteger d = c.multiply(b);

3.10 数组

int[] a = new int[10];
  • for each 循环
    for(variable : collection) statement
    variable是须定义一个变量,collection这一集合表达式必须是一个数组或者是实现了Iterable接口的类对象。

  • 匿名数组

new int[] {15, 43, 23, 66 };
//使用这种语法可以在不创建新变量的情况下重新初始化一个数组

a = new int[] {15, 43, 23, 66 };
  • 数组拷贝
    允许将一个数组变量拷贝给另一个数组变量,两个数组变量可以引用同一个数组
    int[] a = b;

如果希望将一个数组的所有值拷贝到一个新的数组中去,可以使用Arrays类的copyOf方法:

int[] copiedNumbers = Arrays.copyOf(Numbers,Numbers.length);
//第二个参数是新数组的长度,这个方法通常用来增加数组大小。
Numbers = Arrays.copyOf(Numbers,2 * Numbers.length);
  • 多维数组和不规则数组
posted @ 2020-07-02 17:11  c1utchfan  阅读(192)  评论(0)    收藏  举报