《Java核心卷第十版》Java基本程序设计结构
1. 第一段Java程序
需要注意:
Java程序文件名必须与类名一致
Java类名首字母大写
2.注释
使用//单行注释:
/* */多行注释:
3.数据类型
共8种基本数据类型:
int, short, long, byte, float, double, char, boolean
长整型在数据末尾添加L表示长整型数据,例如:400000000000L
十六进制以0X开头,如:0X08
二进制以0B开头,如:0B1001
float数据一般在末尾添加F,没有后缀默认为double类型。
char用于保存单个字符
boolean只有true与false两种值,与C语言不通的是,Java中boolean类型不可以与0和1相互转化。
4.变量
变量的声明:
类型名 变量名;
变量需要由字母数字下划线组成,开头不可以是数字,大小写敏感,不可以使用保留关键字。
变量的初始化:
尽量养成变量声明接着初始化的习惯。
int a = 0;
String s = null;
使用赋值号=初始化变量。
5.常量
常量往往使用final修饰,只可以赋值一次,常量名往往全大写。
类常量:
public static final double PI = 3.1415927;
6.运算符
使用+ - * / 表示四则运算,整数除法结果是整数,浮点数除法结果是浮点数。%取余操作用于整数取余操作。
整数除以0会抛出异常,浮点数除以0得到无穷大或者NaN
7.数学函数
double y = Math.sqrt(x) //对x求平方根
double y = Math.pow(x, a) //对x求a次幂
三角函数:
指对数:
常量:
8.数据类型的隐式转换
不同数据类型的数据进行四则运算的时候,会自动转换成一致的数据类型再进行计算。
9.强制类型转换
大存储范围的数据转到小存储范围会有丢失精度的风险,这个时候需要强制类型转换。
10. 方便写法
x = x + 4 ====> x+=4
x = x - 4 ====> x -=4
x = x*4 ====> x*=4
x = x/4 ====> x/=4
x = x + 1 ====> x ++
x = x -1 ====> x --
x++与++x(x--与--x)
++在前先自增,后参与表达式运算。++在后先参与表达式计算后自增
x = 4
y = ++x
z = x++
y现在是5,z也是5
11. 关系运算
相等 ==
不等 !=
大于 >
小于 <
大于等于 >=
小于等于 <=
并且 &&
或者 ||
三元表达式 y = A ? B : C
A为真,y = B,否则 y= C
12.位运算
&位与
|位或
~位非
^异或
<<左移补零
>>右移补符号位
>>>右移补零
13.运算符优先级
优先级依次递减
14.枚举类型
将数据提前设定,在指定范围内取值,防止出错或过多的编码混乱。
enum Size{
SMALL,
MEDIUM,
LARCE,
EXTRA_LARCE
};
Size s = null;
s = Size.MEDIUM;
15.字符串
截取 substring(fromIndex, lastIndex + 1):
String s = "Hello";
String ss = s.substring(0,3);
拼接:
String s = "he";
String ss = "llo";
String sss = s + ss; //"hello"
String all = String.join("/","root","desktop","folder","file.txt"); // "root/desktop/folder/file.txt"
字符串相等判断:
s.equals(ss);
s.equalsIgnoreCase("hello"); //不区分大小写
字符串为空串或为空的判断:
s == null
s.lenth() == 0
频繁操作字符串:
频繁操作字符串的时候使用StringBuilder会更高效。
StringBuilder sb = new StringBuilder();
sb.append(s);
String s = sb.toString();
16.输入输出
使用Scanner读取数据,或者console读取密码
Scanner scanner = new Scanner(System.in);
String inputString = in.nextLine(); //使用回车分隔的行
String inputWord = in.next(); //使用空格分开的字符
int a = in.nextInt();
double b = in.nextDouble();
Console console = System.console();
String username = console.readLine("User Name:");
char[] pass = console.readPassword("password:");
格式化输出:
System.out.printf("%,.2f", 10000.0 / 3.0);
格式化字符串
String s = String.format("Hello, %s, Next year, you will be %d", name, age);
17.文件输入与输出
读取文件:
Scanner in = new Scanner(Paths.get("file.txt"), "UTF-8");
String text = in.readLine();
写入文件:
PrintWriter writer = new PrintWriter("file.txt", "UTF-8");
writer.print("aaa");
writer.println("bbbb");
writer.printf("%d",a);
18. 流程控制
条件
if, else if , else
设计模式告诉我们要尽快返回数据,少进行if else嵌套。
循环
while(){
}
或
do{
}while()
后者至少执行一次
for(int i =0 ;i< counter; i++ ){}
指定次数的循环
switch(choice)
{
case:
break;
case:
break;
default:
```
}
根据不同的选项执行不同的程序。case可以是char,byte,short,int,String
使用continue跳出本次循环,break,return跳出循环。
19. 大数值
BigInteger a = BigInteger.valueof(100);
加法:a.add(b)
乘法: a.multiply(b)
BigDecimal与之类似。
20. 数组
int [] a = new int[100];
获取长度:a.length
foreach循环:
for(int item : array){ }
数组的拷贝:
int [] a = Arrays.copyOf(sourceArray, length);
数组排序:
int [] a = {1,3,2};
Arrays.sort(a);
Math.random() // 用于产生0-1之间的随机数
多维数组:
int [][] a = new int[3][2]
不规则数组:
int [][] a = new int[6][]
a[0] = new int[10]
a[1] = new int[6]
```