1 Java概述
1.1 Java语言发展史
1.3 计算机存储单元
- 字节(Byte):计算机最小存储单元
-
1.4 常用命令提示符(Windows)
以下命令提示符过于简单,建议读者自学补充内容
切换盘符
C:
(注:所有路径不区分大小写)- 切换路径
cd
- Tab键自动补全
- 下级目录
\
- 上级目录
..
- 列出子文件
dir
- 清屏
cls
- 退出
exit
-
1.6 Java语言开发环境搭建
JVM(Java Virtual Machine)
-
JRE/JDK
JRE(Java Runtime Environment): 是Java程序的运行环境,包含JVM和运行时所需要的 核心类库
- JDK(Java Development Kit): 是Java程序开发工具包,包含
JRE
和Java开发人员使用的工具想要运行一个已有的Java程序,只需安装 JRE 想要开发一个全新的Java程序,必须安装 JDK
添加环境变量
以 JDK 安装在
D:\Java\jdk-9.0.4
目录下为例
- 添加一个全局变量:
JAVA_HOME
:D:\Java\jdk-9.0.4
改变一个全局变量
Path
: 在最前面添加%JAVA_HOME%\bin
使用命令行运行java程序
新建一个java文件(类名必须与函数名完全一致)
- 使用
javac
进行编译(增加一个后缀为class
的同名文件) - 使用
java
进行运行 -
1.7 Java基本概念
//
为单行注释,/*
及*/
之间为多行(区块)注释- 关键字的特点
- 完全小写的英文字母
- 编译器中有特殊颜色
- 标识符
- 可以包括英文字母(区分大小写),阿拉伯数字,
$
和_
- 不能以数字开头
- 不能是关键字
- 可以包括英文字母(区分大小写),阿拉伯数字,
- 一个文件只允许最多有一个
public
类 println
输出后自动换行,print
输出后并不会进行换行1.8 IDEA介绍
IDEA项目结构
- 由上级到下级:项目(Project)-模块(Module)-包(Package)
- 所有的代码写在
src
文件中 src
下添加package,用.
分隔,代表文件树的结构,例如train.basic.hellworld
实际上是新建了三个嵌套文件夹
idea常用的快捷键
字符串不是基本类型,而是引用类型
- 浮点数默认类型为double,如果一定要使用float,需要加上后缀F
- 整数默认为int类型,如果一定要使用long,需要加上后缀L
- 数据的宽泛性与占用内存大小并不一定相关,例如float占用4字节,long占用8字节,但float能表示的数据更加广泛
类型转换
byte(1字节)
- short(2字节)
- int(4字节)
-
浮点型
float(4字节)
-
字符型
-
布尔型
boolean(1字节)
2.2 常量
final Type Name = Expression;
- 约定俗成的规定:常量标识符的名字采用大写字母,单词之间用下划线隔开
final KILOGRAMS_PER_POUND = 0.4545
一些内置的常量
Integer.MAX_VALUE // int类型最大正整数值
Integer.MIN_VALUE // int类型最小负整数值
Double.MAX_VALUE // double类型最大正数
Double.MIN_VALUE // double类型最大正数
Double.POSITIVE_INFINITY // double类型正无限大值
Double.NEGATIVE_INFINITY // double类型负无限大值
Double.NaN // double类型中非数字类型的值
// Float则定义了类似于Double类的为double定义的常量
2.3 变量
Java编译器要求所有变量在使用之前必须初始化
Math.round()
是四舍五入函数,传入参数为double或float类型的浮点数-
2.4 运算符
+
有三种用法- 对于数值,进行加法运算
- 对于char类型,char被提升为int,然后再进行加法计算
- 对于字符串String类型,代表字符串的连接操作
- 自增与自减运算符
- 单独使用时,++i与i++没有任何区别
- 与其他操作符混合使用时,++i先进行自增,i++先进行其他操作再自增
- 赋值转换
- 如果赋值转换是从低级到高级,Java会自动进行转换
- 如果赋值转换是从高级到低级,则需要强制进行转换
- 三元运算符
<条件语句>?<表达式1>:<表达式2>
3 方法
3.1 方法的定义
public static void 方法名称(){方法体}
public static int sum(int a, int b){return a + b;}
注意事项
直接调用
- 打印调用
-
3.3 方法重载
方法重载:多个方法名称一样,但是参数不一样
- 参数不同的情况
- 参数个数不同
- 参数类型不同
- 参数多类型的顺序不同
方法不可重载的情况
表达式的类型为:byte/short/char/int/String/enum 中的一种
- 多个case后面的数值不可以重复
- switch语句的格式可以很灵活:前后顺序可以颠倒,而且break语句可以省略
- 从匹配到的case语句开始向下执行,直到遇到break或者整体结束为止(穿透性)
```java
switch(表达式){
case 常量值1:
case 常量值2:语句体1;
break;
… default:语句体2;
break;
}语句体n+1;
break;
<a name="p2fWQ"></a>
# 5 循环
<a name="nFd96"></a>
## 5.1 for循环
```java
for(初始化表达式;布尔表达式;步进表达式){
循环体;
}
5.2 while循环
初始化表达式;
while(布尔表达式){
循环体;
步进表达式;
}
5.3 do…while循环
初始化表达式
do{
循环体;
步进表达式;
}while(布尔表达式)
5.4 循环控制
- 数组的特点
- 数组是一种引用数据类型
- 数组当中的多个数据,类型必须统一
- 数组的长度在程序运行期间不可改变
- 数组的初始化
- 动态初始化(指定长度)
int[] array = new int[100];
- 静态初始化(指定内容)
int[] array = new int[] {5,15,25};
- 省略的静态初始化
int[] array = {5, 15, 25};
- 动态初始化(指定长度)
数组初始化可以拆分
//动态拆分
int[] arrayA;
arrayA = new int[100];
//静态拆分
int[] arrayB;
arrayB = new int[] {15,25,35};
使用动态初始化,其中元素会有一个默认值
- 整型为0
- 浮点型为0.0
- 字符型为’\u0000’
- 布尔类型为false
- 引用类型为null
-
6.2 Java内存划分
栈(Stack)
- 存放方法中的局部变量
- 一旦超出作用域,立刻从栈内存当中消失
- 堆(Heap)
- 存放
new
出来的东西 - 堆内存里面的东西都有一个地址值(16进制)
- 堆内存里面的数据,都有默认值(同动态初始化数组的默认值)
- 存放
- 方法区(Method Area)
- 存储.class相关信息,包含方法的信息
- 本地方法栈(Native Method Stack)
- 与操作系统相关
- 寄存器(pc Register)
static Object max(Collection a)
返回集合a中元素最大值(基于其接口Comparable的方法compareTo())static Object max(Collection a, Comparator c)
根据比较器c的顺序,返回集合a的最大值static Object min(Collection a)
static Object min(Collection a, Comparator c)
static void reverse(List a)
static void shuffle(List a)
static void sort(List a)
static void sort(List a, Comparator c)