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

3.1 一个简单的java应用程序

public class FirstSample{

public static void main(String[] args){

System.out.println("We will not use 'Hello,World!'");

}

}

1)区分大小写

2)public称为访问修饰符

3)class表明程序中的全部内容都包含在类中

4)源代码的文件名必须与公共类的名字相同

5)编译过的程序,JVM从指定类中的main方法开始执行

6)这里使用System。out对象,调用println方法

 

3.2 注释

每行注释://

一段注释:/*和*/

 

3.3 数据类型

Java强类型语言,必须为每个变量声明类型。

8种基本类型:4种整型,2种浮点类型、1种表示Unicode编码的字符类型 1种boolean类型

 

3.3.1 整型

int 4字节

short 2字节

long 8字节

byte 1字节

byte、short用于特定场合,例如底层文件处理或者控制占用存储空间量的大数组。

 

3.3.2 浮点类型

float 4字节,后缀F或f

double 8字节,后缀D或d

 

3.3.3 char类型

char类型字面量值用单引号括起来。

‘A’是编码为65所对应的字符常量

“A”是包含一个字符A的字符串

public static void main(String\u005B\u005D arge)

public static void main(String[] arge)

 

Unicode转义序列会在解析代码之前得到处理,例如 "\u0022+\u0022"得到 ”“+”“ ,空字符串。

 

3.3.4 Unicode和char类型

在基本的多语言级别中,每个字符用16位表示,被称为代码单元。

java中char类型描述了UTF-16编码中的一个代码单元。不建议使用char。

 

3.3.5 boolean类型

逻辑判断

 

3.4 变量

每个变量都有类型。

 

3.4.1 变量初始化

声明变量之后,必须用赋值语句对变量进行显示初始化。 (变量声明和初始化放在同一行)

 

 

3.4.2 常量

final指示常量。

final double CM_PER_INCH = 2.54;

一旦被复制不能修改,西关使用全大写。

 

3.5 运算符

public static strictfp void main(String[] args) 标记必须使用严格的浮点计算。

 

3.5.2 数值类型之间的转换

int -> float、long->float、long->double 精度丢失

 

3.5.3 强制类型转换

double x = 9.997;

int nx = (int) x; //强制类型转换通过截断,得到9,最接近的整数使用 Math.round方法

 

3.5.4 结合赋值和运算符

x+=4;

 

3.5.5 自增与自减运算符

n++ ++n

前缀形式先完成加1,后缀形式,使用变量原来的值

 

3.5.6 关系和boolean运算符

三元操作符: x < y ? x : y

如果条件为true,为第一个表达式的值,否则为第二个

 

3.5.7 位运算符

3.5.8 括号与运算符级别

 

3.5.9 枚举类型

enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };

Size s = Size.MEDIUM;

 

3.6 字符串

概念上 java字符串就是Unicode字符序列。

 

3.6.1 子串

String greetting = "Hello";

String s = greetting.substring(0,3)

 

3.6.2 拼接

String message = expletive + PG13;

String.join() 方法,用定界符分割

 

3.6.3 不可变字符串

String类没有提供用于修改字符串的方法。

修改字符串,更改变量引用另一个字符串

 

3.6.4 检测字符串是否相等

s.equals(t) 相等返回true

只有字符串常量共享,substring操作结果不共享,不能用==测试

 

3.6.5 空串和null串

检查既不是null要不是空串:if(str != null && str.length() != 0)

 

3.6.6 码点与代码单元

 

3.6.7 String API

CharSequence类型参数,是一个接口类型,所有字符串都属于这个接口。

 

3.6.9 构建字符串

字符串链接的方式效率低,使用StringBuiler类避免。

StringBuilder builder = new StringBuilder();

builder.append(ch);

String completedString = builder.toString();

 

StringBuffer类效率稍低,但采用多线程方式操作。

 

3.7 输入输出

3.7.1 读取输入

通过控制台进行输入,需要构造一个Scanner对象,并与“标注输入流”System.in关联

import java.util.*;

Scanner in = new Scanner(System.in);

String name = in.nextLine();

 

3.7.2 格式化输出

System.out.printf("Hello,%s. Next year, you'll be %d", name,age);

System.ou

 

3.7.3 文件输入与输出

读取:

Scanner in = new Scanner(Paths.get("c:\\myfile.txt"),"UTF-8");

System.out.println(in.toString());

 

写入:

PrintWrite out = new PrintWrite("myfile.txt","UTF-8");

 

3.8 控制流程

3.8.1 块作用域

块确定了变量的作用域。不能在嵌套的两个块中声明同名变量。

 

3.8.2 条件语句

else子句与最邻近的if构成一组。

 

3.8.3 循环 while

3.8.4 确定循环 for

 

3.8.5 多重选择 switch

case标签可以使:char、byte、short、int、枚举、字符串字面量

switch(choice){

case 1:

...;

break;

case 2:

...;

break;

default:

...;

break;

}

 

3.8.6 中断控制流程语句

带标签额break语句,用于跳出多重嵌套的循环语句。标签放在希望跳出的最外层循环之前,紧跟一个冒号。

continue将中断正常的控制流程,转移到最内层循环的首部。

 

3.9 大数值

java.math包中BigInteger 和 BigDecimal,处理任意精度的整数、浮点数。

BigInteger.valueOf(100) 普通数值转大数值。

使用add、multiply方法运算符

3.10 数组

声明类型 int[] a = new int[100];

获得数组元素个数:array.length

一旦创建数组,不能改变它的大小。如果经常需要扩展大小,应该使用另一种数据结构——数组列表array list。

 

3.10.3 数组拷贝

允许将一个数组变量拷贝给另一个数组变量,这时两个变量引用同一个数组。

希望数组所有制拷贝到新数组,使用:Arrays.copyOf(luckyNumbers, luckyNumbers.length)

增加数组大小 Arrys.copyOf(luckyNumbers, 2*luckyNumbers.length)

 

3.10.4 命令行参数

java Message -g cruel world

args[0]: "-g"

args[1]: "cruel"

args[2]: "world"

 

3.10.5 数组排序

int[] a = new int[10000];

Arrays.sort(a); //使用优化的快速排序算法

 

3.10.6 多维数组

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值