1.++(自增的问题)
int a = 3;
int b = a++; // b = 3,先给b赋值,再自增
int c = ++a; // c = 5,先自增,再给b赋值
2. 位运算符
~:取反
&:按位与
|:按位或
^:按位异或
<<:左移运算符
>>:右移运算符
二进制:
8:1000
4:0100
-------
&:0000
|:1100
8的取反0111
异或的理解:
00的0
01的1
10的1
11的0
右移一位相当于除2取商
左移一位相当于乘2
int b = 3<<2; //相当于3*2*2;
3.随机函数
double d = Math.random();
//Math.random()是生成一个随机数,随机范围是0~1之间的小数。
//如果乘以100用int接收,就是随机生成0到99的一个数。
4.递归
递归的基本思想就是自己调用自己,一个使用递归技术的方法将会直接或者间接地调用自己。
public static long factorial(int n) { // 求阶乘
if (n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
5 .package包的用法
为什么需要package
为了解决类之间的重名问题
为了便于管理类,合适的类位于合适的包!
注意事项
写项目时都要加包,不要使用默认包。
6. Scanner的使用
Scanner的主要作用就是接收键盘的输入。
/**
* 输出输入的内容
*/
public static void test01() {
Scanner scanner = new Scanner(System.in);
String str = scanner.next(); // 字符串
System.out.println("输入的内容为:" + str);
}
/**
* 两个数做加法运算
*/
public static void test02() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个加数:");
int a = scanner.nextInt(); // 整型数
System.out.println("请输入另外一个加数:");
int b = scanner.nextInt();
System.out.println("两个数的和为:" + (a + b));
}
7. 对象和类
面向对象编程的本质:
以类的方式组织代码,以对象的方式组织(封装)数据。
instance(实例)。
31. 程序执行过程的内存分析
成员变量会默认赋值。
局部变量不会默认赋值。
引用类型都是4个字节。
栈(自动分配连续的空间,后进先出,放置:局部变量)
堆(不连续,放置new的对象)
方法区(堆的一部分,放置类的信息(代码),static变量,常量池(字符串常量)等)
public class Student {
// 静态的数据
String name;
int id;
int age;
String gender;
int weight;
// 动态的行为
public void study() {
System.out.println(name + "在学习");
}
public void sayHello(String sname) {
System.out.println(name + "向" + sname + "说你好");
}
public static void main(String[] args) {
// 通过类加载器 Class Loader 加载Student类,加载后,在方法区中就有了Student类的信息
Student s1 = new Student();
s1.name = "高琪";
s1.study();
s1.sayHello("老马");
Student s2 = new Student();
s2.age = 18;
s2.name = "老高";
}
}
33. 垃圾回收机制
对象空间的分配
使用new关键字创建对象即可
对象空间的释放
将对象赋值null即可。
程序员无权调用垃圾回收器
程序员可以通过System.gc(),通知GC运行,但是JAVA规范并不能保证立刻运行
finalize方法,是JAVA提供给程序员用来释放对象或资源的方法,但是尽量少用
34. 构造方法
初始化对象的属性
Math.sqrt(); // 开平方
35 . 重载(overload)
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法,调用时,会根据不同的参数表选择不同的方法。
两同三不同
同一个类,同一个方法名
不同,参数列表不同(类型,个数,顺序不同)
构造方法也可以重载
36. static关键字
在类中,用static声明的成员变量为静态变量,或者叫做类变量
它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。
对于该类的所有对象来说,static变量只有一份,被该类的所有对象共享。
可以使用"对象.类属性"来调用,不过一般都是用“类名.类属性”。
static变量置于方法区中。
用static声明的方法为静态方法
不需要对象,就可以调用(类名.方法名)。
在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
37. this关键字
普通方法中,this总是指向调用该方法的对象
构造方法中,this总是指向正要初始化的对象
this不能用于static方法中
38. 继承
面向对象的三大特征 :继承,封装,多态
类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模
提高代码的复用性!
extends的意思是“拓展”,子类是父类的拓展。
子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法)
java中类只有单继承,没有像C++那样的多继承,多继承会引起混乱,使得继承链过于复杂,系统难以维护。
多继承就是为了实现代码的复用性,却引入了复杂性,使得系统类之间的关系混乱。
java中的多继承可以通过接口来实现。
如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。
39. 方法的重写(override)
在子类中可以根据需要对从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称,参数列表和返回类型
重写方法不能使用比被重写方法更严格的访问权限(由于多态)
40 .
eclipse中查看一个类的父类,按Ctrl + T或者F4