第一周总结以及补充
** *1:java 最大的特点:跨平台 jvm
是不是java 可以跨所有的平台?
答:不是。主流的平台都有对应的虚拟机。
2:c 是否可以跨平台?
可以。C 是多次编译,多个平台运行。Java 一次编译,四处执行。
**3:jdk:java development kit java 开发工具包
sdk:software development kit
**
4:jre:java 运行环境 java runtime environment
**
5:bin: binary 二进制**
Javac.exe :java 的编译工具 负责将 源代码编译为 字节码文件.class 与平台无关的。
Class 文件中的内容:jvm 的指令+ 数据的集合。
Java.exe :java 的解释工具。负责将字节码中的指令和数据解释给本地平台去执行。
6:DOS*
内部命令:DOS操作系统自身的指令。可以直接执行的。
外部命令:不是自身的指令,通常对应外部的执行的程序。
**
7:运算符
1.算术运算**
//任何表达式,或者操作数 都是有返回值的。
int num = 0;
num = num ++;//先返回,后自增。将 num ++ 表达式的返回值赋值给 num
num = ++ num;//先自增,后返回
例如:
num = 0;
System.out.println(num ++ + num ++ + ++ num);//0 1 3
2.赋值运算符
+= -= *= /= %= &= >>= |=
num = num + 1;
num ++;
++num;
num += 1;
3.逻辑运算符
逻辑表达式的返回值 为 Boolean值。 所有的操作数也必须是 Boolean 类型
4.位运算符
int a = 10;
int b = 20;
//一个数先后 ^ 同一个数 两次,结果是它自身
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a);//输出20
System.out.println(b);//输出10
**
8:方法
**
方法出现的必要性:代码复用、功能模块化,便于维护。
方法的语法:
[方法的各种修饰符 public static final] 返回类型 方法名字 (形参列表) {方法体}
**
9.返回类型:java支持的任意类型(8+3) + void
**.
如果返回类型不是void 代表着 方法执行之后必须产生一个与方法类型兼容的值。
如果返回类型是void ,那么代表方法执行完毕之后,只是实现了某些功能,而没有得到任何的结果。
方法名:是一种标识符 命名规范:首字符小写,多个单词构成,从第二个单词开始首字符大写。见名知意。
形参列表:代表这该方法的一种需求,代表使用该方法的时候,需要给该方法提供的一些外部的数据的列表。 形参列表可以是空的。
**
10.Return:return 是java 的一个关键字,只能使用在方法体中。
**
作用:
1:如果方法的返回类型不是void 那么必须 在方法体中必须使用return 将方法产生的结果 返回。 Return 结果表达式;
public static int max(int a, int b){
int max = a > b ? a : b;
return max;
}
2: 如果方法的返回类型 是 void ,那么在方法体中 可以使用 return ; 来结束方法。
3:方法中一旦执行了return 语句。该方法立即结束。立即返回。
**
11.方法重载:overload
**
在一个类的内部,方法名相同,参数列表不同的方法,称为方法重载。与返回类型无关。
方法的签名:把方法名+参数列表的组合称为方法的签名。一个类的内部,方法的签名必须唯一。
**
12.面向对象:
**
类:对对象的抽象的描述。
对象:类的一个具体的实例。
例子:农夫与蛇
1:分析:分析问题中存在几个对象。
2个对象,一个农夫,一个蛇。
2:分析:分析对象有什么功能和属性就可以实现我们最终的需求。
农夫:救助蛇、死亡
蛇:苏醒、咬人
3:创建类来描述对象。
农夫:Farmer 蛇:Snake
4:通过类,创建对象,创建一个农夫,一条蛇
Farmer farmer = new Farmer();
Snake snake = new Snake();
5:让对象调用自己对应的功能即可。
public class TestMethod {//测试类
public static void main(String[] args) {
Farmer farmer = new Farmer();
Snake snake = new Snake();
farmer.save(snake);
}
}
class Farmer{//农夫类
void save(Snake s){
System.out.println("善良的农夫救助了一条蛇!");
s.awake();
//代表了当前对象,也就是救助了s 的农夫
s.attack(this);
}
void die(){
System.out.println("善良的农夫挂了!");
}
}
class Snake{//蛇类
void awake(){
System.out.println("冻僵的蛇苏醒了!");
}
void attack(Farmer farmer){
System.out.println("蛇攻击了善良的农夫!");
farmer.die();
}
}
**
13.构造方法
**:
1.特点:没有返回类型、方法名必须有类名一致、任何一个类都至少有一个构造方法、如果一个类没有显示的提供一个构造方法,那么编译器会帮助我们生成一个默认无参的构造方法、如果一个类的内容,已经显式的定义了一个构造方法,那么默认无参的将不在提供!一个类可以有多个构造方法,构造方法可以重载、只能用new关键字调用。
2.构造方法的作用:对对象进行初始化。Jvm负责给创建对象,分配内存。
3:创建一个对象的过程:
1:类加载(仅一次,如果已经加载就不再加载)。对静态成员分配内存并初始化。
2:由jvm 给该类的所有的实例变量 在堆中分配内存,并执行默认初始化。
3:执行实例变量显示的赋值。
4:执行构造方法内的代码(对象就初始化完毕了)。
5:由new 关键字 将生成对象的引用返回。
**
14: this:代表当前对象的引用。
**
This 在方法体中使用,可以访问调用本类的成员变量和方法。
在类的方法中,直接访问本类的成员的时候,每一个成员前面都会隐含了一个this.可以显示的使用this ,如果不显示使用,那么编译器会给添加上this。
三个作用:
1:保证了不同的对象访问同一个方法的时候,访问的是不同对象内部的属性。
2:用来区分局部和成员变量的。
3:用来在本类的构造方法中调用本类的其他的构造方法,而且必须是在第一句调用。
**
15:static 关键字
**
可以修饰成员变量、成员方法。静态变量,静态方法。
静态成员变量的特点:
1:只被初始化一次,在类加载的时候被初始化。
类加载:当使用一个类的时候,由类加载器将类的字节码数据加载到内存中(方法区中). 三步:装载(将类的字节码数据加载到内存中)、链接、类的初始化(对static 修饰的变量进行默认初始化,并执行显示的赋值的初始话)。类加载只有一次。
2:只有一份内存空间,该空间不依赖于任何对象。多个对象共享该内存空间。
3:可以通过两种方式来访问静态成员,通过 【类名.】 通过 【对象.】 建议使用 【类名.】
**
16: 关于数组
**
只有一维数组
int[] arr = new int[10];
2:数组特点:
1:数组有长度的属性,代表的是数组元素的个数。
2:数组元素是有序的,是0序的,每个元素都是有序号的,序号称为:索引、下标、角标,从0开始,依次递增。数组元素的下标的范围[0~length-1]
3: 数组是一个对象,是引用数据类型。数组引用存放的是数组在堆内存中的首地址。
4:数组有两种定义的方式,静态+动态。
5:数组中只能保存一种数据类型
6:数组的元素是连续的在堆内存中分配的
7:数组的长度不可变
8:数组元素的类型可以是java支持的任意类型。
9:使用动态初始化,数组元素会被jvm进行默认初始化。
整数:0 浮点:0.0 char ‘\u0000’ Boolean false 引用 null
10:通过索引访问数组元素的效率非常高。遍历元素的效率很高。
11:通过内容查找元素的效率比较低。
12:插入元素,删除元素效率比较低。
**
17:方法调用 传参
**