目录
一、一个简单的 java 程序
1. 示例代码及简单说明
*.java是一个 java 源文件。源文件包含类,类包含方法,方法包含语句。
其中 args 存放命令行的参数:
2. 类的编写规范
- 在一个源文件里,public 修饰的类只能有一个。(相当于C语言中,只能有一个main函数入口。)
- public 修饰的类的类名,必须与源文件名一致。
- 同一个包里不能有类名相同的类。
-
类名一般采用大驼峰,即每个单词的首字母大写。如,HelloWorld;方法名、参数名、成员变量、局部变量统一使用小驼峰,即首单词首字母小写,其它单词首字母大写。如,mainFunction。
3. 编译生成的字节码文件
一个类对应生成一个字节码文件。
4. 在 CMD 中打印乱码的问题
打印中文存在乱码的原因是,记事本采用的是 UTF-8 编码格式(可变长,1~4字节,几乎全球所有字符),而 CMD 采用的是 GBK 编码格式(2字节,中文、日韩字符),这两种编码格式的字符集不相同。
我们只需要在编译命令中指定 UTF-8 编码格式即可:
二、注释
种类:注释有三种,单行(经常用)、多行(不推荐用)、文档(用在类、方法之前,描述它们的作用等)。
不参与编译、运行:编译器会过滤掉注释。
规范:注释要精简、正能量。
示例:
JavaDoc 工具:从文档注释中抽取类、方法、成员等注释,自动生成一个API帮助文档(详细描述了如何使用特定服务的接口的技术文档)。
javadoc 命令的参数:
-d filename --生成一个文件夹,存放帮助文档
-author --显示作者
-version --显示版本号
-encoding xxx --指定编码格式,要与源文件的编码格式相匹配
-private 或 -package --生成默认、私有级别的类文档(javadoc默认只生成public、protected级别的)
示例:
命令:
javadoc -d HelloWorld -author -version -encoding UTF-8 -private HelloWorld2.java
结果:
JavaSE API 帮助文档:
在线版:Java SE 文档 — API 和文档 | Oracle 中国
离线版:百度网盘 请输入提取码 提取码:3bws
快捷键:ctl+/(单行);crl+shift+/(多行)。
三、下载IDEA并创建一个Java项目
1. 什么是IDEA
IDEA跟VS一样,是一款集成开发环境,编辑、编译、运行、调式等啥都齐全。
2. 创建一个 Java 项目
下载:Download IntelliJ IDEA – The Leading Java and Kotlin IDE
傻瓜式安装即可。建议不要安装中文插件,出什么问题网上的教程都是英文的,反而不方便。
创建一个项目:
编辑: 快捷键:main方法,main/psvm;打印内容.sout,打印到控制窗口。
运行:
Java 技术书籍:Java编程思想、Java核心技术、阿里巴巴《Java开发手册-嵩山版》,当工具书用。
四、标识符
什么是标识符:程序员给类、方法、变量命的名字。
命名规则(硬性):可包含字母、数字、下划线、$;不能以数字开头;不能是关键字(Java命的名字)。
命名规则(建议):不以下划线、$ 开头或结尾。
关键字:
五、数据类型
1. 总览
关键字 | 字节长度 | 可存放数值范围 | 包装类 |
byte | 1 | -128~127 | Byte |
short | 2 | -32768~32767 | Short |
int | 4 | - | Integer |
long | 8 | - | Long |
float | 4 | 不关注 | Float |
double | 8 | 不关注 | Double |
char | 2 | 0~65535 | Character |
boolean | Java规范无明确规定 | true 和 false | Boolean |
要点:
- 不同于C语言,某些类型在不同平台存储数据的内存单元长度不同(如:long、指针类型),Java 可移植性很高,基本数据类型可存储的字节长度是固定的。
- 不谈 boolean,只有 char 是无符号的(字符的编码不需要符号)。
- 浮点数的计算或判断(比较大小)可能存在误差:Java 中的浮点数也遵循 IEEE 754 标准,用有限的浮点数存储空间,存放无限的小数二进制表示,存不完,就会溢出,产生误差。
- 不同于C采用 ASCII 字符集,Java 中采用的是 Unicode 字符集(可以涵盖很多字符,包括中文),因此 char 类型也更大,2个字节(char 类型可存放中文,如:char = '中')。
- 字符串型 + 其它数据类型,会把其它数据类型直接转为字符串。
- 不同于C语言中可以用 0 表示逻辑假,非 0 表示逻辑真。Java的真、假只能用 bloolean 类型的 true、false 表示(逻辑值,不是数值)。
// 错误写法1
boolean b = 0;
// 错误写法2
if( 1 + 2){
......
}
// 正确写法1
boolean b = false;
// 正确写法2
if( 1 + 2 == 3){
......
}
- 关于 boolean 的字节长度:在《Java虚拟机规范》中说到,Java 虚拟机中没有 boolean 专用的字节码指令,编译器会把单个的 boolean 编译为 int 类型,把 boolean 数组编译为 byte 数组。(Java无 boolean 规范,但Java虚拟机有 boolean 规范)
- Java 非常严格,定义的局部变量不能没有赋值,否则会报错。建议在定义局部变量时,就初始化为0。
- Java 中整数字面常量默认为 int 类型,浮点数字面常量默认为 double 类型。
- 一个小于 int 范围的整数字面量,系统会将其当成 byte 或 short 类型来处理。
- 一个超过 int 范围的整数字面量,必须在其后加 l 或 L(建议用 L,l 很像 1),否则会报错;在浮点数字面常量后加 f 或 F,表示 float 类型(直接赋值一个浮点数给 float 变量,系统会认为把 double 给了 float,报错)。
- 赋值的数值不能超过变量的范围,会溢出,报错。
2. 强制类型转换
大范围转小范围,强制类型转换(前提得相干,比如都是数值),会损失精度。
3. 类型提升
- 表达式运算,范围小的会自动提升为范围大的(自动转换,隐式)。
- 整型提升(同 byte、short 类型运算):byte 或 short 小于 int,会先提升为 int 再运算(为了方便硬件设计,一般都是4个字节地读取)。不同与C语言的整型提升,Java 整型提升后并不会截断 int 转回原类型,而是保持 int。
4. 字符串类型 String
整数字符串转整型:
数值转字符串:
七、运算符
1. 算术运算符
不同于C语言,Java的取余 % 的操作数可以是小数,但是没意义。
2. 关系运算符
禁止连用:先判断1 < i 得到 true,再判断 true < 20,但两边类型不同,不可比较。
3. 逻辑运算符
- && 和 || 遵循短路求值:&& 左边为假,直接假;|| 左边为真,直接真。
- & 和 | 的操作数表达式结果为逻辑值,也为逻辑运算符,但不支持短路。
4. 位运算符
按位异或 ^ :相同为0,相异为1。
5. 移位运算符
左移 << :右边添0。(×2)
右移 >> :左边添符号位的值。(÷2)
无符号右移 >>> :左边添0。
能移动过大或者负数,但是没意义。
6. 条件运算符
又叫三目运算符,表达式1 ? 表达式2 : 表达式3 。
不能单独一句,必须被使用。
7. 赋值运算符
复合的赋值运算符,会帮助强制转换。
八、逻辑控制语句
1. 分支结构
switch(x),x只能是 char、byte、short、int;String、枚举。
九、输入输出
1. 三种标准输出
2. 占位符
%b:布尔值。
%h:散列码(Hash Code)。
3. 标准输入
next:遇到空格、回车、制表符停止。并且回车会留在缓冲区。
nextLine:遇到回车停止。并且会吃掉回车。
循环输入:
4. 随机数
十、调试