//其中可能包含错误,如若发现可指出,以便修改文。
一.前言,入门,常量,变量
1. Java是高级语言
2. 1,0 bit 比特
1 Byte =8 bit
GB TB PB EB ZB
3. 10进制转化成2进制
4. 10进制转化成二进制 除二取余
5. 二进制转换成10进制 8421
6. 字节 计算机最小存储单位 8bit 一字节 byte B
7. DOS 早期操作系统
8. 命令:
盘: 盘符切换
dir 查看当前文件夹
cd 进入文件夹 cd 文件夹名称 cd 文件夹1\文件夹2\文件夹3
cd.. 退出文件夹
cd\ 退出到磁盘根目录
cls 清屏
exit 退出
9.JVM 虚拟机
10.跨平台 运行在所有操作系统上 不同版本JVM
11.JRE 运行环境 JVM + 运行时核心类
12.JDK 开发工具包
13.JDK安装 目录自定义 安装路径禁中文和空格
14.JAVA_HOME
1.系统变量-新建-JAVA_HOME-bin路径前的路径
2.系统变量-path-%JAVA_HOME%\bin
dos 输入Javac
15.javac 编译器 java解释器
16.javac HelloWorld.java 产生字节码文件
17.java HelloWorld 运行字节码文件
18. 编译 翻译成class文件
运行 运行class文件
19.//单行注释 /* */多行注释
20.关键字 定义好的单词 小写 public calss static void
21.标识符 自定义
22.命名 $ _ 禁关键字
23.类名大驼峰 方法名小驼峰 变量名小写
24. 字符常量''
字符串常量"" 可以为空
空常量 null 不能打印
25.基本数据类型 整数,浮点数,字符,布尔
引用数据类型 类,数组,接口,Lambda,字符串
26. byte -128 - 127
short -3万 - 3万
int -2的31次 - 2的31次
long -2的63次 - 2的63次 9后面跟着18个0多
char 0-6万
27.long L float F
28.数据范围与字节数无关,float 4个字节 long 8个字节 float数据范围比long广
二.数据类型转换,运算符,方法入门
1.int + byte 自动转换 取值范围小的类型 提升 为取值范围大的类型
2.byte,short,char -->int-->long-->float-->double
3.强制类型转换 取值范围大的类型 提升 为取值范围小的类型
4.数据类型 变量名 =(数据类型)被转数据值
5.int-->short 砍掉两字节 数据丢失
6.ASCII十进制
7.a++ ++a 独立运算一样
设a=1;
b=a++;先赋值再加 1
或
b=++a;先加再赋值 2
8.>= <= 等于在后面
9.&& 短路 左false右边不计算
10.三元运算符 数据类型 变量名 = 布尔表达式?结果1(true):结果2(false); 不能单独使用或常量
11.方法
修饰符 返回值类型 方法名(参数列表){
return ;
}
12:修饰符 public static
13:方法:类里方法外 一个类
14.s=s+1 两次运算 +=运算一次 强制转换
short s = 1;
s+=1;//s是2
15. byte+byte=int+int-->int
byte+short=int+int-->int
16.Unicode码表:0-127与ASCII一样,128开始更多字符
17.'0'-48 'A'-65 'a'-97
18.一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。
19.++a<100 a的值不变
20.
对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,
那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。
byte num1 = /*(byte)*/ 30;
char zifu = /*(char)*/ 65; A
三.流程控制语句
1.
switch(表达式){
case 常量值1:
语句;
break;
default:
语句;
break;
}
表达式的类型 byte short int char enum
不写break会穿透不判断case直到遇到break;
2.continue结束本次循环开启下次循环
四.IDEA,方法
1.Project新建项目 Project>Module>Package
2.show in Explorer查看包的目录
3.src里建包(文件夹)
4.包里创class
5. .out class文件
6. .src java文件
7. .idea .iml IDEA自己使用
8.Ctrl+Y 删除所在行
9.Ctrl+Alt+L 格式化代码
10.Ctrl+Shift+/ 选中代码多行注释
11.Alt+Shift+上下箭头 移动本行代码
12.
File->setting->keymap->main menu->code 修改快捷键
remove 移除
Add Keyboard 修改快捷键
13.file-close project 不关闭IDEA而关闭项目
14.实参:传入的变量 形参:参数列表的
15.输出语句中可调用返回值不是void的方法
16.集成开发环境 提高效率
17.命名不规范才会出现绿色波浪线 不符合小驼峰要求
五.数组
1.数据类型[]数组名=new 数据类型[长度];
2.数据类型[]数组名=new 数据类型[长度]{元素1,元素2};
3.数据类型[]数组名={元素1,元素2};
4. 数组名.length 长度
5.内存 临时存储区域
6.
Java内存:
方法区 class文件
堆内存 存储对象或数组 new 有16进制的地址值
方法栈 方法运行时使用的内存 存放局部变量-超出作用域消失
本地方法栈:与操作系统有关
寄存器:与CPU有关
7. 静态初始化:内容
动态初始化:长度
8.动态初始化可拆 静态初始化不可拆成两步
9.
动态初始化默认值
整数 0
浮点 0.0
字符 \u0000
布尔 false
引用 null
10.数据类型[]数组A=数组B
11.所有引用类型可赋值为null,数组必须new才能使用元素
12.new过的数组可以再new 覆盖
六.类与对象,封装,构造方法
1.类的定义:
public class 类名{
}
2.成员变量:方法外
3.成员方法:没static
4.类名 对象名 = new 类名();
5.对象名.成员变量
6.封装:隐藏属性用get,set访问 private
7.private 最小权限
8.this 当前类的对象
9.构造方法 对象被创建,初始化对象
10.无参构造方法-操作set,get 布尔类型get变is
11. Student s1= new Student(); 无参构造函数 可以用set添加内容
Student s2 =new Student("赵丽颖",18) 有参构造函数
12.Arrays.toString(数组名)方法 格式[元素1, 元素2]
13.方法是一种封装 细节信息隐藏
七.Scanner类,Random类,ArrayList类
1.import 包名.类名
2.Scanner sc =new Scanner(System.in);
3. 匿名对象:没有变量名的对象 只能使用一次
new Scanner(System.in);
可以作为参数 实参:new Scanner(System.in);
形参:Scanner sc
返回值:new Scanner(System.in);
4. Random r =new Random(); 里面没有值
r.nextInt(10) 0-9之间的值
r.nextInt(10)+1 1-10之间的值
5.Student[] students = new Student[3] 学生数组 再创造学生对象
6.Element 元素
7. ArrayList<String> list =new ArrayList<>();
list.add("曹操"); 添加到尾部 返回布尔类型
public E remove(int index) 返回被删除的元素
public E get(int index) 返回获取的元素
public int size();
基本类型包装类:
Character
Integer
其他开头大写
打印array[2]得到地址值
返回值是ArrayList的命名
八:String类、static、Arrays类、Math类
1. 字符串值在创建后就不能改变 不然指向一个新的创建出来的字符串 因为变量保存的是地址值
String可以共享 内存中完全一样的String就是一个
String底层靠字符数组实现
2. equals
equalsIgnoreCase 比较相等 忽略大小写
length
concat 连接到字符串末尾
charAt 返回索引处的字符
indexOf 返回指定字符串第一次出现在字符串内的索引值
substring 从beginindex开始到字符串末尾/从[beginindex,endindex)
tocharArray 将字符串更换成字符数组 ('a','b','c') 数组
getBytes 将字符串更换成字节数组 (97,98,99) 数组
replace 第一次字符串用第二个字符串替代
split 分割 数组
concat 拼接字符
3.Object是一种引用类型 任意对象
4.创建数组
char[]charArray={'A','B','C'};
byte[]byteArray={97,98,99};
String str3=new String(charArray);
5."abc".equals(str5)推荐字符串在前面,不然空指针异常
5.对于引用类型来说,==是进行【地址值】的比较。
6.字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
7.split .是"\\." 空格就是" "
8.static修饰变量属于该类每个对象 任何对象都可以改变变量值
9.static 数据类型 变量名
10.静态方法和成员方法都可以直接访问类变量或静态方法
11.静态方法不能直接访问普通成员变量或成员方法
12.类方法=静态方法:static 用类名来调用不需要创建类对象
13.static修饰的内容:只加载一次
14.
Array所有类都静态方法
.sort升序排序(字符,字符串也可)
15.Math类
abs 绝对值
ceil 大于等于
floor 小于等于
round 四舍五入
16.this代表当前对象
17.在IDEA需要偷懒
九.继承,super,this,抽象类
1.父类=超类=基类
2.父类非私有属性和方法 子类可以直接使用
3.extend继承
4.成员变量父类与子类重名,子类会先访问到子类成员变量,访问父类需要使用super
5.私有 private 使用get/set访问到
6.如果子类的成员方法与父类完全一致,就会覆盖重写
7.成员方法:没static,调用成员方法需要new对象
8.子类无法继承父类的构造方法。子类用super才能使用父类的构造方法。
9.Java支持单继承和多层继承
10.super和this不能同时出现
11.
抽象方法 必须在抽象类里面
修饰符 abstract 返回值类型 方法体(参数列表)
abstract class 类名字
抽象类可以有构造方法
12.方法是子类的优先于子类,没有再向上找
13.成员变量和局部变量名字相同,方法里优先使用局部变量
14.new的是子类对象优先使用子类方法。(父类子类重名方法)
15.@Override 检测是不是有效的覆盖重写
16.子类方法的权限必须大于父类方法
public>protected>(default)>private
留空什么都不写
17.子类的构造方法才能调用父类的构造方法。
18.子类的无参构造函数无法调用父类的有参构造函数
19.构造方法的作用是new对象时候的。
20.子类调用父类的构造方法,必须是第一个语句而且不能调用多次
21.this会是此类成员变量而不是最近的局部变量
22.抽象类不用实现接口所有方法,其余方法可以交给子类来完成
23.抽象类继承别的抽象类可以不实现抽象方法,也可以实现抽象方法
24.子类继承父类的有参构造 需要super()里面传入参数
25.super.方法名 调用父类的该方法