环境配置
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_73
PATH=....;%JAVA_HOME%/bin
JDK、JRE、JVM关系
-
JDK(Java Development Kit)
Java开发编译工具,包含开发Java程序的所有工具,如javac和java等,JDK里包含JRE。
-
JRE
Java运行环境,如果要运行Java程序,就需要JRE的支持,JRE里包含JVM。
-
Java虚拟机(Java Virtual Machine)
简称JVM,它是运行所有Java程序的虚拟计算机,好比是模拟器。(程序是运行在jvm中的)
JVM是Java语言的运行环境,也是Java 最具吸引力的特性之一。JVM用于读取并处理编译过的与平台无关的字节码(class)文件,从而实现Java的可 移植性(跨平台)。
注意的是Java虚拟机(JVM)是不跨平台的。也就是说在Win下得装Win版的JVM,在Linux下装Linux版的JVM。
执行流程
计算机常用快捷键
ctrl + c
ctrl + v
ctrl + s
ctrl + z
ctrl + x
ctrl + a
win + e
win + r
alt + tab
…
Eclipse常用快捷键
//main + alt + / + enter 快速创建main方法
//syso + alt + / + enter 快速编写打印方法
//shift + alt + a 打开或者取消多行编辑
//ctrl + alt + ↓复制一行并且插入下一行
//ctrl + alt + ↑复制一行并且插入上一行
//ctrl + d 删除所在行
标示符
用来组成代码的符号,比如:类名,方法名,变量名等。在编程时为了增强程序阅读性,定义的名称一定要用有意义,这些名称称为标识符。
注意点
-
由字母、数字、下划线(_)、$组成,但不能以数字开头。
-
大小写敏感。
-
不能使用关键字、保留字。
-
不建议Java API里的类名作为自己的类名。
使用一个非关键字和保留字的有意义的英文单词,不起非主流的名字。
数据类型
分类
-
基本数据类型
-
整型
- byte
- short
- int
- long
-
浮点型
- float
- double
-
字符
- char
-
-
在JVM中采用的unicode映射表
- 本质还是整数
-
最大能标示2个符号字节【0到65535】
-
boolean
-
引用数据类型(对象类型)
类型转换
种类
- 自动
- 强制
溢出问题
TODO
数组
含义
相同数据类型的集合
一维数组
语法
- 类型 [] 名称 = {value1,…,valueN}
- 类型 [] 名称 =new 类型[] {value1,…,valueN}
- 类型 [] 名称 = new 类型[size];
- 类型 [] 名称;
二维数组
含义
一维数组的每个元素又是一个一维数组
定义
- 类型 [][] [] [] 名称 = {{v1,…,vn},{v1,…,vn},{v1,…,vn},…};
- 类型 [][] [] [] 名称 = new 类型[] []{{v1,…,vn},{v1,…,vn},{v1,…,vn},…};
- 类型 [][] [] [] 名称 = new 类型[size1] [size2]; //size1必写,size2不是必须的
- 类型 [][] [] [] 名称;
可变参数
语法
用在方法的参数中,本质还是一个数组
要求
- 可变参数只能是方法参数中的最后一个参数
- 一个方法中最多只能有一个可变参数
案例
public class _02ArrayMethod {
public static void main(String ... args) {
//本质传递的是一个空数组
say();
say("first");
say("first","second");
}
public static void say(String ... content ){
System.out.println(Arrays.toString(content));
}
}
Arrays
含义
JDK中提供用于操作数据的一个工具类
常用方法
- sort
- toString
- copyOf
- binarySearch
案例
public class _04Arrays {
public static void main(String[] args) {
int [] ages = {1,2,3,6,4};
//Arrays.toString(ages);
//冒泡排序 选择排序
//折半查找
//排序
Arrays.sort(ages);
//[1, 2, 3, 4, 6]
//System.out.println(Arrays.toString(ages));
//折半查找
int index = Arrays.binarySearch(ages, 4);
System.out.println(index);
//如果长度不够的时候,使用的是元素类型的默认值来填充
int temp [] = Arrays.copyOf(ages, 6);
System.out.println(Arrays.toString(temp));
}
}
String
含义
不可变字符串,本质字符数组来存储。
常用方法
public class _05String {
public static void main(String[] args) throws InterruptedException {
//String
//含义
//不可变字符串,一旦创建了对象,该对象就不能被修改
//本质采用字符数组来存储
//常用方法
String name = " javaHello ";
//获取长度
System.out.println(name.length());
//转大写
System.out.println(name.toUpperCase());
//转小写
System.out.println(name.toLowerCase());
//去除左右两边的空格
System.out.println(name.trim());
//97对应的字符在该字符串第一次出现的位置
System.out.println(name.indexOf(97));
//97对应的字符在该字符串最后一次出现的位置
System.out.println(name.lastIndexOf(97));
//从什么位置开始到最后面进行截取
String result = name.substring(2);
System.out.println(result);
//从什么位置开始到什么位置结束进行截取
result = name.substring(2,6);
System.out.println(result);
//替换
result = name.replace("java", "android");
System.out.println(result);
//切割
String content = "a,b,c,d";
System.out.println(Arrays.toString(content.split(",")));
//是否包含子串
content.contains("a,b");
}
}
面向过程
含义
每一个功能都使用函数来完成,在完成某一个功能的时候,就挨着调用函数即可
面向对象
含义
顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是具备某些功能的对象。
优势
- 面向对象更加符合正常思维
- 面向对象适用于大型项目开发,方便维护和扩展
注意点
-
千万不要误解为面向对象一定就优于面向过程的设计
-
面向对象是基于面向过程的,永远不可能取代面向过程
-
面向对象的方法,是面向过程的。
类
含义
是创建对象模板,是抽象的
在面向对象开发中,是现有类再有对象的。
组成
0-N个行为
0-N个特征
语法
修饰符 class 类名{
0-N个行为
0-N个特征
}
注意点
- 类名是合法标示符,建议单词首字母大写
对象
含义
类的具体体现
具体存在的实物
基本操作
- 创建对象
- 打印对象
- 调用对象的方法
- 修改/获取对象的变量
- 对象的比较
- 回收对象
public class User {
String name;
int age;
public void say(){
System.out.println("test");
}
//入口方法
public static void main(String[] args) {
//创建对象 new 类名([参数1,...,参数N]); 立即对象【匿名对象】
//创建对象 类名 对象名 = new 类名([参数1,...,参数N]);
User zhangsan = new User();
//调用方法 对象.方法名([参数1,...,参数N]);
zhangsan.say();
//修改成员变量 对象.成员变量=新值;
zhangsan.age = 10;
//获取成员变量 对象.成员变量;
System.out.println(zhangsan.age);
//打印对象 本质打印的是对象.toString()结果
System.out.println(zhangsan);
System.out.println(zhangsan.toString());
//每创建一个对象就在堆中开辟一个新的空间,此时对象名指向该空间。
//对象的比较
User ls = new User();
User ww = new User();
//==
//如果用在基本数据类型中比较的是内容是否一样
//如果用在引用数据类型中比较的是内存地址是否一样
System.out.println(ls==ww);
//对象回收
//JVM中有个优先级比较低的线程【后台任务】,该线程会回收没有被引用的对象。 GC
//当GC回收一个对象的时候会先调用该对象的finalized方法
ls = null;
//手动触发gc工作
System.gc();
}
@Override
protected void finalize() throws Throwable {
System.out.println("我被回收了。。。");
}
}
构造器
含义
用来创建对象和初始化对象并返回对象的一种特殊方法
语法
修饰符 类([参数列表]){
//方法体
}
注意点
- 创建一个类就会自动有一个默认的构造器,一旦显示给了构造器默认就会失效
- 构造器的名和类名是一样
- 没有返回类型
- 不需要return 任何数据
- 构造器可以重载
案例
public class Role {
//作用
//创建对象并返回对象,以及在创建对象的时候初始化对象的信息
//语法
/*
修饰符 类([参数列表]){
//方法体
}
*/
String content;
public Role(){
}
public Role(String name){
content = name;
}
//注意点
/*
- 创建一个类就会自动有一个默认的构造器,一旦显示给了构造器默认就会失效
- 构造器的名和类名是一样
- 没有返回类型
- 不需要return 任何数据
- 构造器可以重载
*/
public static void main(String[] args) {
Role one = new Role();
Role two = new Role("test");
System.out.println(two.content);
}
}
默认构造器
- 定义一个类之后自带有一个默认的构造器
- 没有参数的
- 范围修饰符和类的是一样
- 如果显示指定了构造器那么默认的就会失效
方法
含义
完成某一功能代码的集合
定义
修饰符 返回类型 方法名([参数类表]){
方法体
[return 对应类型的数据;]
}
案例
public class _08Method {
public static void main(String[] args) {
}
public int cal(int a,int b){
return a+b;
}
public void say(){
System.out.println("test");
}
}
方法重载
含义
有多个名称相同的方法,但是参数是不一样【类型和个数】,和方法的返回类型是没有关系的。
案列
public class _09MethodOverload {
public static void main(String[] args) {
}
//参数不一样
//类型
//数量
//有多个名称相同的方法,但是参数是不一样
public int cal(int a,int b){
return a+b;
}
/*
public long cal(int a,int b){
return a+b;
}*/
public float cal(float a,float b){
return a+b;
}
public int cal(int a,int b,int c){
return a+b+c;
}
}
作业
-
冒泡排序
-
选择排序
-
二分查找
-
练习String、Arrays相关方法
-
思考面向过程和面向对象的区别
-
思考构造器
-
思考类和对象的关系