1.注释、标识符、关键字
1.1 注释Comments
Java中的注释有三种:
1、单行注释:// Line Comment
2、多行注释:/* Block Commnet /
3、文档注释:/* 开头,*/ 结尾
1.2 标识符
Java所有的组成部分都需要名字。类名、变量名、方法名都被称为标识符。
标识符注意点:
1、标识符首字母必须为大小写英文字母、美元符 $、下划线_
2、标识符第二个字母必须为大小写英文字母、美元符 $、下划线_、数字
3、标识符大小写敏感
4、不可用关键字作为标识符
5、标识符可以使用中文,也可使用汉语拼音,但不建议这么做,以“见文知意”的原则进行标识符的书写。
1.3 关键字
![在这里插入图片描述](
2.数据类型
JAVA是强类型语言,所有变量必须先定义才能使用,声明了但未定义也不允许使用。
JAVA的数据类型分为两大类:基本类型 和 引用类型。
2.1 基本类型
每个基本的数据类型,都对应一个包装类。
类型 | 占用字节/位 |
byte | 占1个字节 |
int | 占4个字节 |
char | 占2个字节 |
boolean | 占1位 |
float | 占4个字节 |
double | 占8个字节 |
long | 占8个字节 |
2.2 引用类型
// TODO
3.类型转换
JAVA是强类型语言,类型转换时注意以下几点:
1、布尔类型的数据不可以进行类型转换;
2、字节大的转换为字节小的,注意截断问题;
3、字节小的转换为字节大的,注意内存溢出问题。
基本数据类型的优先级从低到高,排列如下:
byte,short,char -> int -> long -> float -> double
4.变量、常量
4.1 变量作用域
变量有如下3种作用域:
public class HelloWorld {
// 类变量。前面加static,从属于类
static double salary = 100;
// 实例变量。前面无static,从属于类对象。
// 实例变量若不初始化,则系统会自行初始化,基本类型默认值为0,布尔类型默认值为false,非基本类型默认值为null。
String name;
int age;
// main方法
public static void main(String[] args) {
// 局部变量:必须声明和初始化
int i = 10;
System.out.println(i);
// 实例变量的使用
HelloWorld helloWorld = new HelloWorld();
System.out.println(helloWorld.name);
System.out.println(helloWorld.age);
// 类变量的使用
System.out.println(salary);
}
}
4.2 常量
使用关键字final定义常量。如:final int age = 18;
常量标识符一般使用全字母大写。
5.运算符
6.包机制、JavaDoc
6.1 包机制
为了更好地组织类,JAVA提供了包机制,类似于WINDOWS中的文件夹,用于区别类名的命名空间。
一般利用公司域名倒置作为包名。如百度使用com.baidu.www作为包名。
包语句语法格式:package pkg1.pkg2.pkg3;
为了能够使用某一个包中的成员,需要使用import关键字将该包明确地导入:import pkg1.pkg2;
注意:
- import导包语句必须放在package pkg1.pkg2.pkg3;包语法之后。
- 不同包中的类名或函数名可以相同,但一般不会将另一个包中的同名函数包含到某个包中。
6.2 JavaDoc
javadoc命令是用来生成自己的API文档的。
参数信息如下:
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
6.2.1 使用DOS命令生成JavaDoc文件
生成的Doc文件在index.xml中。
选项 -encoding UTF-8 -charset UTF-8 是为了避免注释中有中文出现乱码。
6.2.2 使用IDE自动生成JavaDoc文档
// TODO
7. 用户交互Scanner对象
7.1 next()方法
1.next()函数一定要读取到有效字符后才可以结束输入。
2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
3.只有输入有效字符后,next()函数才会将其后面输入的空白作为分隔符或结束符。即下述中的输入hello world,但输出hello。
4.next()函数不能得到带有空格的字符串。
package scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
// 创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
// 判断用户有没有输入字符串
if (scanner.hasNext()) {
// 使用next方式接收
String str = scanner.next(); // next()函数读取分隔符
// 输入hello world,输出hello
System.out.println("输出的内容为:" + str);
}
// 凡是属于IO流的类若不关闭会一直占用资源。创建时就要想着关闭
scanner.close();
}
}
7.2 hasNextLine()方法
1.nextLine()函数以Enter为结束符,即nextLine()方法返回的是输入回车之前的所有字符。
2.nextLine()函数可以获取到空白。
package scanner;
import java.util.Scanner; // Scanner
public class Demo02 {
public static void main(String[] args) {
// 创建一个扫描器对象,用于接收键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
if (scanner.hasNextLine()) {
String str = scanner.nextLine();
// 输入hello world,输出hello world
System.out.println("输出的内容为:" + str);
}
// IO流的类,用完即关闭
scanner.close();
}
}
8.三种代码流程结构
8.2.2 Switch Case
switch case语法同C,不同之处在于,switch中的变量类型可以如下:
- byte、short、int、char
- 从JavaSE 7开始,switch支持字符串String类型
- case标签必须为字符串常量或字面量
8.3 循环结构
8.3.3 For
Java5中引入了一种主要用于遍历数组和集合的增强型for循环。
// 声明语句:声明作用域仅为函数体的局部变量,该变量类型同数组元素类型。其值与数组元素值相同。
// 表达式:表达式是要访问的数组名,或返回值为数组的方法。
for (声明语句 : 表达式) {
// 代码语句
}
9.命令行传参
10.可变参数
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.printMax(1.0, 3.0, 2.0);
}
/* 可变参数(不定向参数)
* 1.JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。
* 2.在方法声明中,在指定参数类型后加一个省略号...
* 3.一个方法中只能指定一个可变参数,且该参数必须是方法的最后一个参数。
* 任何普通的参数必须在可变参数之前声明。
* */
public static void printMax( double...numbers ) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double maxValue = numbers[0];
for(int i = 1; i < numbers.length; ++i) {
if (numbers[i] > maxValue) {
maxValue = numbers[i];
}
}
System.out.println("The max value is " + maxValue);
}
}
11.数组
11.1数组定义
Java中对数组的定义有如下两种:
- datatype[] data; // JAVA首选的数组定义方法。
- datatype data[]; // 效果同1,但不是JAVA推荐的数组定义方法,该方法纯粹为了适应早期的C、C++开发者。
11.2 数组变量的生成
Java中使用new关键字来创建数组
datatype[] data = new datatype[len];
数组大小一旦确定就不可改变,且数组是引用对象,存放在堆区。
11.3 三种初始化数组的方法
- 静态初始化
int[] a = { 1, 2, 3 };
Man[] mans = { new Man(1, 1), new Man(2, 3) };
- 动态初始化
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
- 数组的默认初始化
数组是引用类型,其元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
即基本类型隐式初始化为0,非基本类型隐式初始化为null。
11.4 数组长度
数组元素的访问是通过数组下标索引实现的,数组下标索引从0开始。
使用length获取数组元素的个数。
12. JAVA内存
13. Arrays数组工具类
包java.util.Arrays中的类Arrays包含用于操作数组的各种方法(如排序和搜索)。该类还包含一个静态工厂,可将数组视为列表。
若指定的数组引用为空,则该类中的方法都抛出一个NullPointerException。
Arrays类中的方法都是static修饰的静态方法,在使用时可直接使用类名进行调用。
Arrays工具类具体函数的使用规则,可参照Jdk8.0开发文档。jdk开发文档下载
13.1 常用函数
函数名 | 作用 |
fill | 给数组赋值 |
sort | 给数组元素排序(默认升序) |
equals | 比较两个数组,数组中的元素值是否相等 |
binarySearch | 对已排好序的数组进行二分查找 |
14. 稀疏数组
如上所示,稀疏数组解析如下:
原数组有6行7列共8个不同值(不包括0),其中原数组第1行第4列的值为22…
1、当一个数组中大部分元素为0,或者为同一值时,可使用稀疏数组来保存该数组。
2、稀疏数组的处理方式是:
a)记录数组一共有几行几列,有多少个不同值;
b)针对不同值的元素,将其行列及值记录在一个小规模的数组中,从而缩小原数组存储规模。
如上所示,左边是原始数组,右边是稀疏数组。