需要框架细节 二、JDK JRE 是什么(区别)?
JDK三、运行机制
JDk(开发人员使用)= JRE + 开发工具集(eg:Javac,Java 编译工具)
JRE
JRE(仅使用)= JVM + JavaSE 标准类库
编译器 != JVM
四、注意事项执行流程
.java(源文件) ---编译 javac ---> .class(字节码文件) -----运行 Java -----> 结果
注 :使用Java命令行运行时,注意不写 .class
.class 装载到 JVM 机上执行
class 类
pubilc 只能有一个,其他任意数量
编译后,每一个类都对应一个 .class
文件名与 public 的类名一致,否则编译失败
五、注释
文档注释
javadoc -d D:\temp(生成的文档的位置)-author -version xxxxx.java
六、规范
Tab: 整体后移
shift + Tab: 整体前移
源文件应为 utf-8 (实际开发中)
七、DOS的基本原理
DOS 磁盘 *** 作系统
md 创建新目录 rd 删除目录
dir 查看当前目录
cd 切换为其他盘符 change directory
cd /D :c 切换到c盘 /D 为改变驱动器(盘)的当前目录或者当前驱动器
tree d:
cls 清屏
exit 退出
echo 输入内容到文件
move 剪切
八、相对路径绝对路径
.. 父目录(相对路径)..
. 当前目录 .
根目录
九、变量类型+名称+值
变量表示存储区域
int 4 字节
double 8 字节
十、数据类型
运算从左至右:
System.out.println( 100 + 300 + "hello"); //400hello
System.out.println("hello" + 100 + 300); //hello100300
System.out.println(' a ' + 100 ); // 97 + 100
基本数据类型
数值型
整数类型 :
eg:4 -- 占 4 个字节,int 类型
浮点型:
浮点类型 = 符号 + 指数 + 尾数
浮点(陷阱)比较相等时,应使用 if ( math.abs (num1 - num2) < 0.00001 ) "相等" ;
字符型 char 2字节
使用的是 unicode 码兼容了 Ascall 码,中文英文都是二字节,utf-8 的英文一个字节,中文三个字节
GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。
为什么编码有ASCII、Unicode、UTF-8之分? - 知乎
可以直接 char = 77
(此时77不是 int 类型,优先级:先看是否为 Ascll 内的数)
(Ascll 码占一个字节,but 只有 128 个字符);
char = ‘ t ’; // 制表位 (转义字符)
chart 可以保存 int 的常量值,但是不能保存 int 的变量值。
‘ ’ 单引号 ----字符
” “ 双引号== 字符串 sout(name + "t");
char 的本质时一个整数,在输出时,是Unicode码所对应的字符
布尔型 bool 1 java 只能用 false true 表示 bool 类型 c语言可以用 0 1
基本数据类型转换细节
小加大,统一为大 特殊:byte + short = int ;byte + byte = int ; (byte chart short)三者计算时,先转换为int类型。
byte b1 = 10; //对 ,优先级 1. 先判断是否在范围内。 2. 若不在,再观察是否类型不匹配
b1 = b1 + 10;// 错 byte int 数值看范围,变量看类型
> b1 = (byte)(b1 + 10); // 对
int a = 10; byte b2 = a; // 错 如果是变量赋值,要判断类型
{byte,short} 不与 chart 自动转换
bool 不参与转换
int n = 1L; //错误
long n2 = 1L;//对
小转大 强转
(int)4.2 * 3.3 = 4 * 3.3 强转符号只对最近的 *** 作数有效。
大专小 隐式转换(不用显示的写)
基本数据类型和 String 类型的转换
引用数据类型
类(class):string
接口(interface)
数组
十一、Java文档十二、原码 反码 补码
最高位 1 -> + 0 -> -
整数三码合一
负数的反码 = 原码的符号位不变,其它按位取反
负数的补码 = 它的反码 + 1(补码把正负数统一起来)
0 的反码、补码都是 0
Java 没有无符号数
计算机运算,使用补码的方式来运算
查看结果,在转换回原码
十三、位运算七个位运算符
算数右移 >> :
2 >> 2 0000 0010 ---- 0000 0000 2/2/2
-2 >> 2 1000 0010 ---- 1. 补码 1111 1110 2. 右移 1111 1111 3.运算后的原码 1000 0001
-2/2/2 = -1(0) 负数溢出为 -1 正数溢出为 0
1111 1101 (补码) 1111 1100 1000 0011
十四、逻辑运算符&& 短路与 & 逻辑与
|| 短路或 |逻辑或
!逻辑非 ^ 逻辑异或
十五、类、属性与对象
属性 = 成员变量 = 字段 (三种叫法)
访问修饰符 属性类型(基本类型、引用类型) 属性名
四种访问修饰符: public protected 默认 private(后面详解)
数组、对象的参数传递是引用传递(本质是地址在传递,共用一个地址),而值传递,地址
数组、对象指向堆
字符串String = 对象,也是引用类型
内存分配机制
栈:一般存放基本数据类型(局部变量)
堆:存放对象、数组
方法区:常量池(常量:字符串等),类加载信息
示意图:
十六、成员方法
定义:
访问修饰符 返回数据类型 方法名 (形参列表...){
语句
return 返回值;
}
方法不能嵌套定义,可以嵌套使用
跨类调用方法时,对跨的那个类创建新对象,才能调用其方法
执行方法时,开栈
十七、重载(Overload)、可变参数(Variable paramaters)
重载优化为可变参数,
可变参数放在最后,
一个形参列表只能出现一个可变参数。
public int sum(String name, int ... nums){//nums.length nums相当于一个数组 • int result = 0; for(int i = 0; i < nums.length; i++){ result += nums[i]; } }十八、作用域(scope)
全局变量 = 属性
全局变量可以不赋值,会有默认值。局部变量必须赋值
全局变量和局部变量可以重名,就近原则
属性生命周期长,随着对象的创建销毁而创建销毁
局部变量的生命周期短,随着方法的调用的创建销毁而创建销毁
全局变量可以加修饰符,局部变量不能加修饰符
十九、构造器(constructer)
访问修饰符 方法名 (形参列表...){
方法体;
}
构造器无返回值
方法名和类名必须一样
创建对象时,系统会自动调用该类的构造器并完成对对象的属性初始化
作用:完成对新对象的初始化
Person p1 = new Person("muzi", 90);//直接通过构造器来指定名字和年龄
构造器也可以重载
构造器时一种特殊的方法
若程序员不定义构造器,系统会自动生成一个默认的无参构造器(如果自定义了一个构造器,默认的无参构造器失效,需要手动写一个无参构造器,才能使用。)
二十、对象创建流程
加载类的信息,只会加载一次
在堆中分配空间(地址)
完成对象初始化
3.1 默认初始化
3.2 显式初始化
3.3 构造器的初始化
对象在堆中的地址,返回给p(p 是对象名,也可以理解成是对象的引用)
public Dog(String name){ //this.name 就是当前对象的属性name • this.name = name; }
那个对象调用,this就代表哪个对象
细节:
访问属性:this 用于区分当前类的属性和局部变量
this不仅可以用来访问本类的属性,还可以访问其方法、构造器
访问方法:this.方法名(参数列表)继承会详细讲
访问构造器:this(参数列表);注:只能在构造器中的第一条语句访问另一个构造器
this 只能在类里使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)