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购票,你不需要等我,我也不需要等你。所以多线程并发可以提高效率。