小记:
eclipse小记:eclipse自动补全以及防止空格设置:https://blog.youkuaiyun.com/as1072966956/article/details/80672937
防止空格里版本不一样,没有org,而且网上方法都不行诶,因为找不到文件,没法改代码,没想到啊,代码思路都是去掉空格,但eclipse里可以设置只有enter有效啊,我去太机智了,评论的老哥!!!
在Windows/Preferences/java/Editor/Content Assist下后边有个Disable insertion triggers except ‘Enter’,把这个打钩就可以了,只有按enter才会输入到屏幕
JAVA程序将源代码输出成字节码,然后通过JVM(java虚拟机)执行,这样使得不同机器编写的java程序可以在同一环境执行,因为字节码都是一样的,根据不同环境执行就可以。
例如javac将源文件输出成字节码.class,在通过java将.class文件输出。
编译过java源代码之后,每个单独的类都放到了自己的输出文件中,输出文件名字都是类名加.class,执行java时是执行类。也就是说,javac编译的是文件名,java执行的是类名,如果同名的话,运行方便。
java基本上和C++感觉都很类似呀,就算是复习一下C++啦。
命名方法:类名首字母大写,变量采用驼峰StudentName或者下划线student_name
类和对象
this:
this属于一个对象而不属于类,java虚拟机会给每个对象分配this,代表当前对象。
为什么要用this呢?主要是为了提高可读性,如果不用this,构造函数的参数列表名就要与类中成员变量名不同,可读性变差。点这里例子很不错哦。
类变量、类方法
类变量: 类内static修饰的静态变量,共享变量。类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任
何一个该类的对象去修改它时,修改的也是同一个变量;调用可以用类名也可以用对象名调用。
类方法: static修饰的方法。只能访问静态变量,不能访问非静态变量。
四大特征:
抽象、封装、集成、多态
封装:
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
---|---|---|---|---|---|
公 开 | Public | √ | √ | √ | √ |
受保护 | Protected | √ | √ | √ | ╳ |
默 认 | 没有修饰符 | √ | √ | ╳ | ╳ |
私 有 | private | √ | ╳ | ╳ | ╳ |
这里包的概念,在C++比较模糊,应该是C++里的namespace。
包 – 三大作用
1、区分相同名字的类
2、当类很多时,可以很好的管理类
3、控制访问范围
包 – 换包命令
package com. 自定义名字; 全小写
注意:打包命令一般放在文件开始处。
因此定义每个类之前,都要明确包名。
继承
私有不能继承
一个子类最多只能继承一个父类
语法:class 子类 extends 父类
方法重载
方法重载就是在类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。
注意事项:
1、方法名相同
2、方法的参数类型,个数,顺序至少有一项不同
3、方法返回类型可以不同(只是返回类型不一样,不能构成重载)
4、方法的修饰符可以不同(只是控制访问修饰符不同,不能构成重载)
方法覆写
方法覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的那个方法。
注意事项:
方法覆盖有很多条件,有些书上说的比较细,总的讲有两点一定注意:
1、子类的方法的返回类型,参数,方法名称,要和父类的返回类型,参数,方法名称完全一样,否则
编译出错。
2、子类方法不能缩小父类方法的访问权限。
多态
所谓多态,就是指一个引用(类型)在不同情况下的多种状态。也可以理解成:多态是指通过指向父类的指针,来调用在不同子类中实现的方法。
例子:
//非多态演示
Cat cat=new Cat();
cat.cry();
Dog dog=new Dog();
dog.cry();
//多态演示
Animal an=new Cat();
an.cry();
an=new Dog();
an.cry();
//animal是cat和dog的父类
java允许父类引用变量引用它的子类的实例
Animal an=new Cat();//cat是animal的子类。
抽象类
当父类的一些方法不能确定时,可以用 abstract 关键字来修饰该方法[抽象方法],用 abstract 来修饰该类[抽象类]。
相当于C++中包含纯虚函数的接口类。
public class Demo124 {
public static void main(String[] args) {
//Animal an=new Animal(); 抽象类不允许实例化
Animal an=new Cat();
an.cry();
an=new Dog();
an.cry();
}
}
//抽象类 abstract 关键词
abstract class Animal{
String name;
int age;
//动物会叫,使用了 abstract 抽象方法
abstract public void cry();//抽象类中 可以没有abstract抽象方法
// 抽象类内可以有实现方法
public void sx(){
System.out.println("实现方法");
}
}
// 当一个子类继承的父类是 t abstract 抽象类的话,需要程序员把抽象类的抽象方法全部实现。
class Cat extends Animal{
//实现父类的 cry,其实类似上节学习中的子类覆盖父类
public void cry(){
System.out.println("猫猫叫");
}
}
class Dog extends Animal{
//实现父类的 cry,其实类似上节学习中的子类覆盖父类
public void cry(){
System.out.println("汪汪叫");
}
}
其中,抽象类不允许被实例化,abstract 关键词,派生类必须完善抽象方法。
抽象类 – 深入讨论
抽象类是 java 中一个比较重要的类。
1 、用abstract 关键字来修饰一个类时,这个类就是抽象类。
2 、用abstract 关键字来修 饰一个方法时,这个方法就是抽象方法。
3 、abstract 抽象类中的 abstract 抽象方法是不允许在抽象类中实现的,一旦实现就不是抽象方法和
抽象类了。abstract 抽象方法只能在子类中实现。
4 、抽象类中可以拥有实现方法。
5、抽象方法在编程中用的不是很多,但是在公司笔试时,却是考官比较爱问的知识点。
抽象类 – 注意事项
1 、抽象类不能被实例化
2 、抽象类不一定要包含 abstract 方法。也就是说,抽象类可以没有 abstract 抽象方法。
3 、一旦类包含了 abstract 抽象方法,则这个类必须声明为 abstract 抽象类。
4 、抽象方法不能有主体。
正确的抽象方法例: abstract void abc();
错语的抽象方法例:abstract void abc(){}
接口
接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法
写出来。
接口的建立语法: interface 接口名{ { 方法 ;}
语法: class 类名 implements 接口{ {
方法; ;
变量; ;
} }
接口 – 注意事项
1、接口不能被实例化
2、接口中所有的方法都不能有主体。错误语法例:void aaa(){}←(注意不能有花括号)
接口可以看作更加抽象的抽象类。
3、一个类可以实现多个接口
4、接口中可以有变量[但变量不能用 private 和 protected 修饰]
a、接口中的变量,本质上都是 static 的而且是 final 类型的,不管你加不加 static 修饰
b、在 java 开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用
访问形式:接口名. . 变量名
5、一个接口不能继承其它的类,但是可以继承别的接口
定义类完整版:
绑定分为前期绑定和后期绑定。
1、前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定。比如 static方法和final 方法,注意,这里也包括 e private 方法,因为它是隐式 l final 的。
2 、后期绑定:在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动 态绑定,或者运行时绑定。除了前期绑定外的所有方法都属于后期绑定。多态就是在后期绑定这种机制上实现的。
final
final存在的目的
1 、当不希望父类的某个方法被子类覆盖( override) 时,可以用final 关键字修饰。
2 、当不希望类的某个变量的值被修改,可以用 l final 修饰。如果一个变量是 final ,则必须赋初值,否则编译出错。
3 、当不希望类被继承时,可以用final
final – 注意事项
1、final 修饰的变量又叫常量,一般用 XX_XX_XX 来命名。(带下划线)
2、final 修饰的变量在定义时,必须赋值,并且以后不能再赋值。
final – 什么时候用
1、因为案例的考虑,类的某个方法不允许修改。
2、类不会被其它的类继承。
3、某些变量值是固定不变的,比如圆周率 3.1415926
带有final 修饰的变量命名时应有_ _ 下划线来区分表示。这是 java 程序员的标准。
一维数组 – 小结(可以存放对象数据哦)
1、数组可存放同一类型数据;
2、简单数据类型(int,float)数组,可直接赋值;
3、对象数组在定义后,赋值时需要再次为每个对象分配空间[即:new 对象];
4、数组大小必须事先指定;
5、数组名可以理解为指向数组首地址的引用;
6、数组的下标是从 0 开始编号的。
int a[];int[] a;
a=new int[10];
int a[]={2,3,12,2}
二维数组
int a[][]=new int[2][3];