- 每个Java程序必须有一个
main
作为程序执行的入口。 System.out
指向输出,System.in
指向输入, 从键盘获得输入的方法:
import java.util.Scanner;
Scanner input = new Scanner(System.in);
double x = input.nextDouble(); // 读取一个double
- 计算3个数的平均数的例子, ComputeAverage.java:
import java.util.*;
public class ComputeAverage {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter three numbers: ");
double num1 = input.nextDouble();
double num2 = input.nextDouble();
double num3 = input.nextDouble();
System.out.println("The average of three numbers: " + (num1 + num2 + num3) / 3);
}
}
- 下面的两种写法,没有任何性能差别:
import java.util.Scanner;
import java.util.*;
Java的标识符可以有
$
字符,但是不要使用$
,因为这个字符依照惯例仅用于自动生成的源代码,除此之外,标识符的命名规则和C,C++一样。变量的声明和初始化:
int i = 1, j = 2;
声明常量的语法如下, C++ 里的const 改成了关键字
final
:
final datatype CONSTANTNAME = value;
- 常量声明的同时必须初始化,例如:
final double PI = 3.14159;
- 命名惯例:
变量,方法小写,连接起来的第二个单词首字母大写
类名首字母大写
常量名所有字母大写,单词之间使用下划线连接,例如:PI
,MAX_VALUE
.
public static void main(String[] args) {
double miles = 100;
final double KILOMETERS_PER_MILE = 1.609;
double kilometers = miles * KILOMETERS_PER_MILE;
System.out.println(kilometers);
}
Java 有 6种数字数据类型:
byte
,short
,int
,long
,float
,double
, 位数为 8, 16, 32, 64, 32-bit IEEE 754, 64-bit IEEE 754, 全部都是有符号,可表示正数,也可表示负数。前4种表示整数,后两种表示浮点,double
比float
更精确,一般应选double
为数据类型。从键盘读取数字,Scanner 对象的6种方法:
Method | Description |
---|---|
nextByte() | 读取byte整型. |
nextShort() | 读取short整型. |
nextInt() | 读取int整型. |
nextLong() | 读取long整型. |
nextFloat() | 读取float类型值. |
nextDouble() | 读取double类型值. |
- %运算符可用于负数,结果的符合与左操作数相同(dividend)。
- 指数运算: Math.pow(a, b)
- 整形字面值:如果表示的数太大,超过int
表示范围,则在数字后面加L或l,表示为long
类型,通常用大写的L,小写的l很容易和数字1看混淆。
- 在数字前加0b或0B表示为二进制数,加0表示8进制数,加0x或0X表示16进制数。
System.out.println(0B1111); // Displays 15
System.out.println(07777); // Displays 4095
System.out.println(0XFFFF); // Displays 65535
- 浮点字面值默认情况下看作
double
,而非float
,例如 5.0 就被看作double
,如果要指定数值是float
还是double
,可以在数字后面加 f, F, 或 d,D,例如 100.2f, 100.2D,double
比float
更精确。 - 科学计数: 50.534 -> 5.0534E+1, float 或 double 之所以被称为浮点,是因为内部以科学计数法存储,小数点移动到了新的位置(float)。
- 为提高可读性,Java 允许在字面值之间加下划线,但是只能是在两个数的中间。45_ 或 _45都不对,如下, 但是这一个语法只有 1.7 及以上才支持。
long ssn = 232_45_4519;
long creditCardNumber = 2324_4545_4519_3415L;
- How many accurate digits are stored in a float or double type variable? I dont know.
- 显示当前时间,这时间和电脑上的一模一样:
public class ShowCurrentTime {
public static void main(String[] args) {
long total = System.currentTimeMillis();
long totalSeconds = total / 1000;
long currentSecond = totalSeconds % 60;
long totalMinutes = totalSeconds / 60;
long currentMinute = totalMinutes % 60;
long totalHours = totalMinutes / 60;
long currentHour = (totalHours + 8) % 24;
System.out.println("Current Time: " + currentHour + ":"
+ currentMinute + ":" + currentSecond);
}
}
// output: Current Time: 15:9:29
x /= 4 + 5.5 * 1.5;
等同于x = x / (4 + 5.5 * 1.5);
/=
最后执行。i++
读作 i plus plus ,i— —
as i minus minus, 先加后减这些,和 C/C++ 里的完全一样。实际中int k = ++i + i;
这样的写法不是好的写法,看起来麻烦,容易出错。Java 里的6种数值类型的表数范围有的窄,有的宽。如果将窄类型的值赋给宽类型的值,Java会自动进行类型转换,叫做拓宽类型(widening a type), 反过来缩窄类型(narrowing a type)则需要进行显式数据类型转换,其他的和C/C++ 一样。
int i = 1;
byte b = i; // 错误,要求显式转换
- 关于近似值,浮点近似存储,但整数精确存储,因此整数计算能得到精确的结果。