Java的简单理解(3)

Java
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 = "老高";
    }

}

Java的简单理解(3)_第1张图片
image
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

你可能感兴趣的:(Java的简单理解(3))