学习java的基础知识
java通用知识
- java有三大版本:
JavaSE:标准版(桌面程序,控制台开发),是最基础的java知识。
JavaME:嵌入式开发(手机小家电
JavaEE:E企业级开发(web端,服务器开发…),目前最广泛用的。 - JDK,JER,JVM(java接口程序)
JDK:Java Development Kit
JRE:Java Runtime Environment
JVM: JAVA Virtual machine
JAVA SE中的记录知识点
一、流程控制以及数组等
- Java se文档——AP和文档:https://docs.oracle.com/javase/8/docs/api
- Scanner对象:Scanner s new=Scanner(System. in)。可以通过,通过 Scanner类的next()与 nextLine0方法获取输入的字符串,在读取前我们一般需要使用hasNext0与 hasNextline()判断是否还有输入的数据。
- 函数的重载:相同的语句方法,只是函数输入的值类型不一样。输入有的为int有的为float。
方法的重载的规则:
◆方法名称必须相同。
◆参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
◆方法的返回类型可以相同也可以不相同
◆仅仅返回类型不同不足以成为方法的重载。 - 命令行传参:使用javac可以在命令行中执行程序。main中的参数也可以传递参数,如下:
需要使用javac命令编译出来java文件,之后使用java命令执行程序。(注意:需要回退到src后执行文件才能正常运行)
5 不定向参数:
◆JDK15开始,Java支持传递同类型的可变参数给一个方法
◆在方法声明中,在指定参数类型后加一个省略号(…)。
◆一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
例如一个排序程序,在外部用public定义一个可变参数的排序函数。在main里面定义一个类,去调用排序函数。
\6. 递归:自己调用自己
\7. arrays包的应用:可以把数组转换成字符串等等。
\8. 稀疏数组:
\9. ◆当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
◆稀疏数组的处理方式是
◆记录数组一共有几行几列,有多少个不同值
◆把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
◆如下图:左边是原始数组,右边是稀疏数组
二、面向对象
-
面向对象:
◆面向对象编程(Object-Oriented Programming,OOP)
◆面向对象编程的本质就是:以类的方式组织代码,以对象的组织封装)数据
面向对象有三大特性:封装、继承、多态
-
定义方法:有静态方法以及非静态方法。
静态方法:加了static的方法。
可以直接使用类名加方法名,就可以直接调用。例如:
非静态方法:没有加static
非静态的调用方法:????
其中的代码示例:
-
定义类和对象:
◆使用new关键字创建对象
◆使用new关键字刨建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
◆类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下俩个特点:
1.必须和类的名字相同
2.必须没有返回类型也不能写void
◆构造器必须要掌握
创建一个类的例子:
使用类实例化一个对象的例子:
-
无参数的构造器:
注:使用Alt+Insert会生成构造器。
在main方法中,实例化一个类的例子:
-
使用方法和类的时候,内存分配的问题:
static和类一起使用,能够被其他各种方法调用。
\6. 封装的概念
封装可以避免,在对类中的默认值进行幅值时,进行错误的赋值。能够对传递到类中的值,做一些特定的操作,例如判断。等等
在main函数中,使用set和get能够预防数据不合法。或者对数据进行一些操作等等。
\6. 继承的概念:
◆继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
◆ extands的意思是“扩展”。子类是父类的扩展。
◆JAVA中类只有单继承,没有多继承!
◆继承是类和类之间的一种关系。除此之外类和类之间的关系还有依赖、组合、聚合等。
◆继承关系的俩个类,一个为子类(派生类)一个为父类(基类)。子类继承父类使用关键字 extends来表示。
◆子类和父类之间从意义上讲应该具有"isa"的关系.
◆object类
◆super
◆方法重写
例如person主类里面有一个方法,那么任何一个子类,都可以调用父类里面的方法:
注意:主类里面的私有属性,子类无法获取。
ctrl+h能够打开继承树。
使用protected字段可以保护变量。使用super可以调用父类里面的变量以及函数。
上面代码的输出的结果为:
private私有的东西无法被继承。
父类的无参构造会被直接调用。使用子类实体化一个对象时。父类和子类的无参数构造都会被调用。
在父类以及子类中,一般父类写了有参构造,一般就加上一个无参构造,要不然子类调用的时候,会默认加一个super()在最开始。如果没有无参构造会报错。只能在super里面把参数加上。
super注意点:
1.super调用父类的构造方法,必须在构造方法的第一个
2.super必须只能出现在子类的方法或者构造方法中!
3.super和this不能同时调用构造方法!
Vs this代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提
this:没有继承也可以使用
super:只能在继承条件才可以使用
构造方法
this();本类的构造
super():父类的构造!
7. 重写
重写都是方法的重写,与属性无关。
使用非静态方法定以类。
静态方法,和非静态方法有非常大的不同。重写只有在非静态的情况下才这么叫。而且只有在public的情况下才这么叫。
重写:需要有继承关系,子类重写父类的方法
1.方法名必须相同
2.参数列表列表必须相同
3.修饰符:范围可以扩大但不能缩小:pub1ic> Protected> Default> private
4.抛出的异常:范围,可以被缩小,但不能扩大;ClassNotFoundException-> Exception(大)
重写,子类的方法和父类必要一致;方法体不同!
为什么需要重写:
1.父类的功能,子类不一定需要,或者不一定满足!
Alt +Insert 然后选中override
7. 多态
s2.eat()不可以,会被强制转换成。((Student)s2).eat();转换成子类。
多态注意事:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系,类型转换异常!CLassCastException
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1= new Son()
4.不能使用多态的情况
(1).static方法,属于类,它不属于实例;
(2).final常量;
(3).private方法;
其他杂类
1、常用快捷键
ctrl+shift+alt:多行操作
psvm:生成main()方法;
fori:生成for循环;
Ctrl+Alt+v:自动补齐返回值类型 和 变量名
ctrl+o:覆写方法(快捷重写方法)
ctrl+i:实现接口中的方法
ctrl+shift+u:大小写转换
CTRL+SHIFT+Z:取消撤销
Alt+Insert:生成构造方法、getter、setter
ctrl+y:删除当前行
Ctrl+Shift+J:将选中的行合并成一行
ctrl+g:定位到某一行
Ctrl+Shitft+向下箭头:将光标所在的代码块向下整体移动
Ctrl+Shift+向上箭头:将光标所在的代码块向上整体移动
Alt+Shift+向下箭头:将行向下移动
Alt+Shift+向上箭头:将行向上移动
Ctrl+F:在当前文件中查找
Ctrl+R:替换字符串
Ctrl+Shift+F:在全局文件中查找字符串
Ctrl+Shift+R:在全局中替换字符串
Ctrl+Shift+Enter:自动补齐{}或者分号;
Shift+Enter:在当前行的下方开始新行
Ctrl+Alt+Enter:在当前行的上方插入新行
Ctrl+Delete:删除光标所在至单词结尾处的所有字符
2、构造器理解
- 和类名相同
- 没有返回值
作用:
- new 本质在调用构造方法
- 初始化对象的值
注意点:
1.定义有参构造器之后,如果还想使用无参构造,显示的是定义一个无参的构造
2.构造器总是结合new运算符来调用,不能对一个已经存在的对象调用构造器来达到重新设置实例字段的目的。
3.构造器与类同名。
4.可以有多个构造器。
5.没有返回值。
alt+ins
this. (当前的)=(传来的)
public class person {
String name;
// 无参构造器
public person(){
this.name="lu nai";
}
// 有参构造器
public person(String name) {
this.name = name;
}
}