JAVA学习笔记2018/8/1
|
注释在企业开发中的应用养成在项目开始写成思路步骤的习惯.
|
在敲完代码之后要检查是否有*号,要时刻用 ctrl+s保存下来自定义函数 前面要有static修饰符 如
添加单行注释快捷键 ctrl+/ 添加块语句注释快捷键 ctrl+shift+/ 取消块语句注释快捷键 ctrl+shift+\
|
函数的重载只要函数参数个数和参数类型不同即可 |
数组的定义元素类型[] 数组名 = new 元素类型[]
---------------------------------------------------------错误提示---------------------------------
引用了空的函数值 其中arr1其内容已经被定义成null故不可调用 如打印这个的话前面的i是int类型的实体
|
Arr[+i+]因为括号里面必须要是常量 但是i和 j都是变量 ,所以需要添加加号把变量变成常量的性质 才能使用 可以这样理解吗
|
面向对象
|
匿名对象可以作为实际参数进行传递 |
Static静态关键字 修饰成员 被static修饰的数据 可以被所有数据所共享1修饰符 用于修饰成员 2 static修饰的成员被所有对象所共享 3 static 优先于对象存在 因为随着类的加载已经存在 但不一定有对象 4 static修饰的成员多了一种调用方式 类名.静态成员
静态使用的注意事项: 1 静态方法只能访问静态成员 (因为静态是随着类提前而存在的 此时类的非静态数据还未创建 故不可以) 2 静态方法中不能用this 和super关键字(因为此时并不一定会有对象存在) 3 主函数 是静态的
静态成员前省略的是类名 非静态成员前省略的是this
|
New一个类名.函数 可以直接来调用 |
静态代码块随着类的加载而执行
*-----------------------------------------------------------------------------------------------------------------------------* 总结: 1静态代码块 2构造代码块 3局部代码块 构造代码块: 直接在类中定义且没有加static关键字的代码块称为{}构造代码; 作用:给对象统一初始化数据
|
两种创建int数组的方法
|
创建一个函数 其中的方法要 get 或者show在一个类或者函数中 要是没有访问到特有数据 就应该定义成static类型 静态的 不占用内存 加了静态修饰符之后 可以不用new一个新的类名 可以直接 类名.函数() 因为4 static修饰的成员多了一种调用方式 类名.静态成员
强制性的
|
数组工具类中的文档注释/** 内容 */ 在开发中要养成这样写的习惯 控制台中cls 是清屏的意思 clear sreem
疑问: 关于javadoc的问题没有得到解答 2018/8/7
利用cmd控制台程序来 javadoc –help来寻找帮助 Javadoc –d 目录/文件名称 –author –version ArrayTools.java |
设计模式:行之有效的一种解决方案 解决问题的一种思想
|
1私有化该类构造函数2通过new在本类中创建一个对象实例、3定义一个公有的方法 将创建的对象返回.
|
饿汉式
在主函数中 就不可以另外new函数了 直接利用接口来返回类对象 其结果都是20 因为t1得到的是testDemo借口返回的一个类对象 同样的t2也是得到的接口返回的类对象 在t1.setnum(10) t2.setnum(20)同样改变的是一个对象 故getNum的时候都会显示20 因为修改的是同一个对象
*--------------------------------------------------------*----------------------------------------------------------------*--
|
继承extends |
|
|
|
多继承和单集成 Java中支持单继承 但不支持C++中的多继承 但有一个改进的方式
覆盖的时候 子函数的权限等级一定要比父函数权限等级想等或者高 若是static的话都要有static
|
一个对象的实例化过程:Person p = new person
|
一个疑问解答 Java中java全局变量先执行还是构造先执行 ? 答:全局变量是在类加载时执行的!就是在编译时!而构造函数是在对象生成时加载的!所以是全局变量先执行! 全局变量是类加载的时候执行生成的 而构造函数是类在创建对象时加载的 |
|
Final关键字继承的弊端 :打破了封装性。 小技巧:ctrl+shift+x / y 大小写切换
代码中的常量要大写表示 不是首字母大写 成员变量一旦被final了 一般都会加static静态 |
继承(抽象类)其背景是 例如犬类中都会犬吠 但是犬科有又有特殊 若在class Dog中定义void show(“叫”);的话 其犬类的子类中若同样定义void show的话 show函数的内容又不一定是(“叫”) 可能是(“汪汪”) 但要是继承犬类的话 需要用到该show行为但是其内容又不一样 故将show函数定义成抽象函数 如 abstract void show(); 这样设置的话类名前就要加abstract修饰符 是抽象类
抽象类是大的类中 没法具体到具体的行为动作 但是有这个动作
|
构造函数:为对象成员变量赋初始值 设置类的全局变量是在构造函数之外的 |
其中programmer类中的构造函数 不能用this 因为
在其父类employee中 属性变量是private的 不能用this来调用的 父类中定义完子类中直接拿来用就可以了 子类中重新写是覆盖 子类中想使用父类的构造时用super();来调用父类的构造函数 |
接口
类与类之间是继承的关系 类与接口之间是实现的关系(接口里的函数都是抽象的 并没有进行实现) 接口不能实例化 只能由实现了接口的子类并覆盖了接口中所有的方法后,该子类才可以实例化,否则 这个子类 就是一个抽象类
|
主函数其特殊之处在1 格式是固定的 2 被JVM java虚拟机所识别和调用
|
接口和抽象类的异同点
|
其中继承了犬类的功能 但导盲是额外的功能 需要用接口来实现其功能
多态的成员变量 成员函数 静态函数只有成员函数有例外 编译时看左边 运行时看右边 cat c =new animal 调用c.show的话 是引用的cat的show 因为内存中引用的cat地址 从cat地址中调用animal的地址
|
|
多态
问题:
在此类创建中 若new一个dog new一个pig的话 那么主函数中的method方法要不停地添加 故:
多态的好处: 前期定义的代码 后期的内容仍然可以使用 多态的弊端: 前期定义的内容 不能调用后期子类的特有内容 如: d.play(); 动物中并没有这个动作 要想调用猫类特有的动作 就得new猫这个类
毕姥爷类讲课是管理 毕老师讲课中是java 在毕老师类型提升到毕姥爷的同时 调用毕老师的讲课函数 但其实毕老师类中也同样有讲课函数 覆盖掉了毕姥爷中的讲课函数 只是覆盖了 在调用x.钓鱼的时候 会正确 因为x本身就是毕姥爷类型 类型判断
|
内部类 |
访问另一个类的私有变量时 需要添加另外的方法 但直接添加在内部类的话可以直接使用其私有变量 |
内部类可以访问外部类的成员 变量 但是外部类无法访问内部类 要设置一个方法 建立一个内部类的函数 来调用
显示的话num输出5 this.num输出4 outher.this.num就是outher类中的成员变量了
这就是内部类可以直接访问外部类的成员 因为内部类持有了外部类的引用 外部类.this.成员名
|
内部匿名类
匿名内部类就是匿名子类对象 忽略了子类对象的名字 public void method1() { //inner i = new inner(); new DEMO11() { void show() { System.out.println("num: "+num); } }.show(); //i.show();
其中java第10个中的最后一个视频 要掌握看好
|
|