注释(Comment)
- // 单行注释
- /* 单行或多行注释 */
- /** 可用于文档化处理的单行或多行注释 */
- Javadoc
JDK提供Javadoc文档自动生成工具,默认只扫描public变量或方法:
[JAVA_HOME_PATH]\javadoc source.java
分隔符
- 分号;
- 逗号,
- 空格
- 点.
- 语句块{ }
标识符(identifier)
- 以字母、下划线、美元符开头,后跟字母、下划线、美元符或数字,大小写敏感,长度无限制,如:
HelloWorld/DataClass/_983/$bS5_c7
关键字(keyword)
- Java关键字都是小写,TURE/FALSE/NULL都不是Java关键字。
- goto和const虽然从未使用,但也被作为Java关键字保留。
true/false虽被用作专门用途,但不是Java关键字。
abstract assert boolean break byte case catch char class const continue default do double else extends final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while
数据类型
- 强类型语言(C/C++/C#/Java) & 弱类型语言(Javascript)
- Java基本数据类型: boolean/char/byte,short,int,long/float,double
- Java整型常量默认为int型,声明long型常量可以后加“l”或“L”
- 浮点数十进制如: 3.05 , 4.5E−3 ; 十六进制只能科学计数法,如: 0x1.2p3=(1∗160+2∗16−1))∗23=9.0 , 0x1.2p−3=(1∗160+2∗16−1))∗2−3=0.140625
- Java浮点型常量默认为double型,声明float型常量可以后加“f”或“F”
- 除零结果有: ∞,−∞,NaN 。如: 3.0/0.0=∞ , −3.0/0.0=−∞ , 0.0/0.0=NaN 。
- 字符型
- Java语言采用16位Unicode编码保存
- 字符常量三种表示方法:
- 单引号:
'n'
- 十六进制编码:
'\u006E'
- 转义字符:
'\n' \\表示换行
- 布尔型
- boolean类型数据只允许取值
true
或false
,不能用0
或者非0
的整数代替true
和false
- boolean类型数据只允许取值
//TestFloat.java
public class TestFloat {
static private double d = 0x1.2p-3;
public static void main(String args[])
{
System.out.println("0x1.2p-3 value:"+d);
System.out.println("3.0/0.0 = "+3.0/0.0);
System.out.println("-3.0/0.0 = "+ (-3.0/0.0));
System.out.println("0.0/0.0 = "+0.0/0.0);
}
}
打印结果:
E:\opensource\Code\hello-world\02_TestFloat>javac TestFloat.java
E:\opensource\Code\hello-world\02_TestFloat>java TestFloat
0x1.2p-3 value:0.140625
3.0/0.0 = Infinity
-3.0/0.0 = -Infinity
0.0/0.0 = NaN
- Java引用数据类型:类/接口, 数组, 枚举, 注解类型
- 引用类型数据以对象的形式存在;值为某个对象的句柄,而不是对象本身;声明时系统值为该变量分配引用空间,并未创建一个具体的对象。
对象构造和初始化:(1)为引用类型变量分配引用空间;(2)创建新对象,分配内存空间,并默认初始化;(3)显示初始化;(4)执行构造方法;(5)为引用类型变量赋值。
- 引用类型数据以对象的形式存在;值为某个对象的句柄,而不是对象本身;声明时系统值为该变量分配引用空间,并未创建一个具体的对象。
变量
- 基本类型变量 & 引用类型变量
- 局部变量 & 成员变量
- 变量必须先声明和初始化(赋初值)才可以使用
- 形参属于局部变量,方法调用时会被隐含初始化
public void m1(int a, int b)
{
int i;
int j=i+4; //编译报错,变量为初始化
int k=a+b;
}
数据存储细节
- 堆内存(Heap Memory):由所有的应用程序公用,存储空间分配不连续,存储容量大。在堆内存中分配存储空间和进行存取操作速度较慢。
- 栈内存(Stack Memory):由特定应用程序专用,存储空间是连续的,以栈的方式(后进先出)进行管理,存储容量小,但访问速度快。
- Java程序运行时,局部变量(包括对象句柄)保存在栈内存中,而对象及其成员变量保存在堆内存中。
值传递
- 基本类型数据传递的是该数据的值本身
- 引用类型数据传递的是对对象的引用(句柄),而非对象本身
标准输入输出
- 控制台 Console 程序
//控制台输入
import java.util.Scanner;
Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
double salary = s.nextDouble();
//控制台输出
System.out.print(); //输出不换行
System.out.printf(); //格式化输出
System.out.println(); //输出换行
// 格式化输出栗子:
public class TestPrintf
{
public static void main(String[] args)
{
System.out.printf("(1) %+8.3f",3.14); //"+"号带正负号,8位字符宽度,3位小数点,浮点型
System.out.println();
System.out.printf("(2) %+-8.3f\n",3.14); //"-"号左对齐
System.out.printf("(3) %08.3f\n",3.14); //字符宽度不足用"0"填充
System.out.printf("(4) %(8.3f\n",-3.14); //负数用括号展示
System.out.printf("(5) %,f\n",2356.3456); //分隔数字用","隔开
System.out.printf("(6) %xf\n",0x4a36); //十六进制
System.out.printf("(7) %#xf\n",0x4a36); //十六进制,多一"0x"
System.out.printf("(8) 你好:%1$s, %2$3d岁, %2$#x岁\n","张三",38); //s表示字符串; 1$/2$/3$代表第几个参数
System.out.printf("(9) %3d, %#<x", 38); //"<"表示上一个参数
}
}
//打印结果:
E:\opensource\Code\hello-world\新建文件夹>javac TestPrintf.java
E:\opensource\Code\hello-world\新建文件夹>java TestPrintf
(1) +3.140
(2) +3.140
(3) 0003.140
(4) (3.140)
(5) 2,356.345600
(6) 4a36f
(7) 0x4a36f
(8) 你好:张三, 38岁, 0x26岁
(9) 38, 0x26
Java编码惯例(各公司不一样)
命名惯例
- 包名 package com.domain;
- 类名 class SprintRain;
- 接口名 interface Account
- 方法名 modifyAccount()
- 变量名 studentName
- 常量名 MAX_LEVEL
类名和接口名一般名词,方法名一般动词
文件组织
- 属性声明
- 构造方法声明
- static语句
- 普通方法声明
- main方法声明
- 内部类声明
分隔和缩进(使用空行)
- 在方法之间
- 在方法内部代码的逻辑段落小结之间
- 在方法中声明局部变量之后,具体的Java语句之前
- 在注释行之前
- 在同一个源文件中定义的多个类/接口之间使用双行的空白行来分隔
分隔和缩进(使用空格)
- 运算符之间,如:
c = a + b
- 在参数列表中的逗号后面,如:
void ml(int month, int year){}
- 运算符之间,如:
声明变量
- 声明变量尽量同时初始化