`
文章列表

方法重写

 一、子类与父类方法的关系 1、延续 父类存在子类不存在 2、新增 父类不存在子类存在 3、重写 父类子类都存在   ps:分析方法调用的规则 编译时:从左边的引用类型开始分析,追溯到Object类 运行时:从右边的对象类型开始分析,追溯到Object类.   二、使用程序鉴定重写 1、@Override -->编译期:如果重写失败则编译错误 2、在父类 定义方法 ,调用 如下图: 在main方法中调用test(‘a’)方法。在编译时期test 会根据方法名和参数列表确认调用的print(int)。但是,在运行时期从对象开始分析则会调用pig类的print(int ...

javase继承

一、继承的作用 1、延续父类的一切(不包含构造器)信息 包括私有信息 这里的私有信息也包括父类的private属性,子类继承父类的这个属性,但是只能间接访问。也就是说,子类不必在子类中声明这个变量,但是子类访问的时候需要调用父类的get,set方法 2、扩展:新增信息 (父类没有,子类存在) 、修改信息(父类子类都存在,子类按需重写) ps:注意构造器不能被继承,因此,不能重写构造器   二、继承实例化过程 父类静态快——》子类静态快 父类构造块——》父类构造器 子类构造块——》子类构造器   三、父类与子类的构造器之间的问题 子类构造器会默认调用父类空构造,如果父类 ...

javase封装

public  :    不同包  不同类  同包 同类 protected :  不同包+子类  同包 同类   这里注意不是protected方法的访问不是在子类中new一个父类对象访问,而是在子类方法中直接访问  public void testLegacy(){  info();  legacy(); //子类访问,legacy是父类的一个protected方法 }   default :家庭和睦  同包 同类  private :自私自利  同类 类: public |default方法:public |protected|default|private属性:public | ...
包与包之间没有包含关系   包之间的编译 javac -d 生成类的路径 -cp 依赖类所在路径(所在类的包所在的目录)  源代码.java  java    -cp 依赖类路径(所在类的报所在的路径)  完整路径
1、程序无权调用gc 2、可以通知回收,System.gc,不保证立即回收 3、可以重写object对象的finalize方法,查看对象是否被回收。当对象被回收是会自动调用finalize方法   引用分类 1、强引用:如方法区 字符串常量池2、软引用:jvm 内存不够 ,回收 , -->缓存3、弱引用:启动回收机制 ,一定会被回收 4、虚引用(灵魂): 搭配容器,善后处理工作。

语句块

普通语句块,位于方法内部,方法内部可见,方法调用时执行 构造块,位于类内部方法外部 ,对象内可见,创造对象的时候调用 静态块,类内部方法外部,但是用static修饰,作用域是类,加载类的时候调用 同步快,以后再补充   语句块的调用顺序 先调用静态块,后调用构造块。静态快只是在加载类的时候调用一次,构造块每当new对象的时候都会调用 如果有继承关系的话,调用的顺序如下 父类静态快——》子类静态快 父类构造块——》父类构造器 子类构造块——》子类构造器

单例模式

单例 模式:确保一个类只有一个对象 饿汉式1、构造器私有化2、提供私有的 静态属性 ,创建该对象3、提供 公共的静态方法 访问 该引用 class Jvm {   private static Jvm jvm = new Jvm();   private Jvm(){};   public static Jvm getJvm()   {      return jvm;   } }   //懒汉式 -->后期存在并发问题 class Jvm {   private Jvm jvm = null;   private Jvm() {}   public s ...

static

一、static的访问方法 类名.方法或变量名。 对象名.方法或变量名  static 不能修饰局部变量 二、静态块 static {   //静态块 :加载类信息  num =1000;  System.out.println("....加载类信息"); } 作用是加载类信息,使用时才会执行,如果仅仅声明变量不会加载   下面的代码要看明白 class Fruit{ //1、public static Fruit f1 =new Fruit() ;   public static int num=20; //共享  //2、public static ...
一、创建对象的方法之一1、new      类  变量名|引用名 =new 类() ;--了解2、克隆3、反序列化4、反射   二、堆、栈、内存的区别 堆:先进先出线性、顺序放置,查找方便,插入不方便,不可共享。存放局部变量(方法内部变量和形参)、基本变量值和引用变量地址。 堆:存放无序,插入方便不可共享。存放new的对象 方法区:存放无序,插入方便速度快,可共享,存放不变的东西(static 字符串常量 类字节码)   三、引用于对象 一个引用在同一个时刻只能指向一个对象一个对象可以被多个引用所指向,其中一个对其发生变化,其他引用也可见一切皆为值传递(基本拷贝值本身,引用拷 ...
一、 方法的签名: 唯一 在同一个类中方法签名唯一   方法的签名: 方法名 +形参列表(类型 个数  顺序) 与 修饰符 、返回值类型|void 形参名 无关例如: public static int pow(int p,int n) public static int pow(int n,int p)//签名重复: pow(int ,int) public static int pow(int n)//参数的个数不同,签名不重复 一个类中 可以包含 同名的方法,但是签名不能相同  -->重载   二、 方法的调用  原则 兼容  就近最优原则(使用接近最优原则的前提是 ...

作用域

public static void main(String[] args){    int num =0; //num生效 ,在从属块中都可见    {   //匿名块   int a =0; //a生效      //int num; //重复声明,编译错误    } //a结束    int a =20;      //int num =1;  //一个块中,变量不能重复声明   } //num结束   ps:java中形参和返回值都是值传递,如果是对象则传递地址。这也属于值传递   例二 public class IfDemo04{  public static void ...

乘法表

public class Test2198{ public static void main(String args[]) {  new Test2198().oneFor(); }  void oneFor() {  int row = 1;  int col=1;  while(row<=9&&col<=9)  {   System.out.print(col+"*"+row+"="+row*col+'\t');   if(col==row)   {    row++;    col=1;    System.out.pri ...

switch

1、表达式 :不能为boolean类型的,只能为整数|1.5枚举|1.7字符串2、case位置不定,按需要编写3、default 位置不定,按需要编写,建议写在最后4、switch结束 1)、正常结束 2)、break 5、break 结束switch ,防止下穿 ,穿透不一定错误,利用穿透 switch(weekDay){   case 1:    day ="星期一";    break;   case 2:    day ="星期二";     break;    default:    day="其他情况";  }
import java.util.Scanner;   Scanner console =new Scanner(System.in); int a = console.nextInt(); 1、获取输入整数  nextInt()2、获取输入浮点数  nextDouble()3、获取字符串 nextLine()  见好就收  见到回车就停止 如果之前存在 nextInt() nextDouble(),要注意已经产生一个回车,要先使用一个nextLine回收一下,才能再使用nextLine读取字符串
//产生随机数 double [0,1)  double rnd = Math.random(); //随机整数 [0,100)  int num = (int)(rnd*100); //注意()作用范围 //[0,100]  num = (int)(rnd*101); //注意()作用范围
Global site tag (gtag.js) - Google Analytics