Java知识点

1.foreach只能访问元素,不能修改元素

for(int ai:a)//foreach只能访问元素,不能修改元素
{
    ai=sc.nextInt();
}
//实际无法为数组写入每个元素

2.重写toString方法:

 @Override
    public String toString() {
        if(shi==0&&xu==0) {
            return 0+"";
        }
        if(shi==0) {
            return xu+"i";
        }
        if(xu>0) {
            return shi + "+" + xu + "i";
        }
        if(xu==0) {
            return shi+"";
        }
        return shi +""+ xu + "i";
    }

3.抽象类

[抽象类]  功https://blog.youkuaiyun.com/wei_zhi/article/details/52736350能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。 

而抽象类是指在普通类的结构里面增加抽象方法的组成部分。

abstract class A{//定义一个抽象类
public void fun(){//普通方法
    System.out.println("存在方法体的方法");
}
​
public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰
}

A是抽象的,无法直接进行实例化操作。为什么不能直接实例化呢?当一个类实例化之后,就意味着这个对象可以调用类中的属性或者放过了,但在抽象类里存在抽象方法,而抽象方法没有方法体,没有方法体就无法进行调用。既然无法进行方法调用的话,又怎么去产生实例化对象呢。

抽象类的使用原则如下: (1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public; (2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理; (3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类; (4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。);

一些问题:

(1)抽象类中有构造方法么? 由于抽象类里会存在一些属性,那么抽象类中一定存在构造方法,其存在目的是为了属性的初始化。 并且子类对象实例化的时候,依然满足先执行父类构造,再执行子类构造的顺序。

(2)抽象类可以用final声明么? 不能,因为抽象类必须有子类,而final定义的类不能有子类;

(3)抽象类能否使用static声明?

package com.wz.abstractdemo;
​
abstract class A{//定义一个抽象类
static abstract class B{//static定义的内部类属于外部类
    public abstract void print();
}
}
​
class C extends A.B{
public void print(){
    System.out.println("**********");
}
}
public class TestDemo {
​
    public static void main(String[] args) {
        A.B ab = new C();//向上转型
        ab.print();
    }
​
}

外部抽象类不允许使用static声明,而内部的抽象类运行使用static声明。使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称。

4.static静态修饰

静态变量可以被类的所有实例共享

静态变量与实例变量的区别如下: 1)静态变量

1.运行时,Java 虚拟机只为静态变量分配一次内存,加载类过程中完成静态变量的内存分配。 ​ 2.在类的内部,可以在任何方法内直接访问静态变量。 ​ 3.在其他类中,可以通过类名访问该类中的静态变量。 2)实例变量

1.每创建一个实例,Java 虚拟机就会为实例变量分配一次内存。 ​ 2.在类的内部,可以在非静态方法中直接访问实例变量。 ​ 3.在本类的静态方法或其他类中则需要通过类的实例对象进行访问。

5.线程

进程:可以看做是现实生活当中的公司。

线程:可以看做是公司当中的某个员工。

注意:进程A和进程B的 内存独立不共享

线程A和线程B,堆内存和方法区内存共享。但是栈内存独立,一个线程一个栈

eg:假设启动10个线程,会有10个栈空间,每个栈和每个栈之间,互不干扰,各自执行各自的,这就是多线程并发。

eg:火车站,可以看做是一个进程。 火车站中的每一个售票窗口可以看做是一个线程。 我在窗口1购票,你可以在窗口2购票,你不需要等我,我也不需要等你。所以多线程并发可以提高效率。

6.修饰词及范围比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值