Java基础知识点总结,有这一篇就够了!

Java命名规范

包名:全小写

类名:大驼峰

方法名、类成员变量、局部变量:小驼峰

数据类型

分为基本数据类型(整数、小数、字符、布尔)和引用数据类型(字符串、数组、类、接口)

三元运算符

(条件表达式) ? 表达式1:表达式2

条件表达式为ture执行表达式1,false执行表达式2

Tip:如果必须有结果,且只有一个条件,可以用三元运算符替代if语句。

Random类

作用是产生随机数

Random ran = new Random();

T i = ran.nextXXX(j);

产生0 ~ j-1 之间的任意随机数

switch语句

只接受byte、short、int、char、string的数据类型

方法重载

一个类定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法重载

(区别于下方覆盖(重写)知识点,并在下方覆盖处说明)

方法的参数传递

当参数是基本数据类型时,是将改地址的数据传过去了,只是给了一个值,在方法内如何操作与原地址内的原值无关。当参数是引用数据类型时,传递的参数实际上时该参数的地址,所以此时修改数值的话,会修改内存中的原地址的数值。

ArrayList集合创建

基本数据类型对应的引用数据类型
基本数据类型对应的引用数据类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
创建集合的代码实现
import java.util.ArrayList;

ArrayList<需要创建的引用数据类型> array = new ArrayList<需要创建的引用数据类型>();
ArrayList常用方法
方法声明功能描述
.add(Object obj)将指定元素obj追加到集合的末尾
.add(int index, Object obj)将指定元素obj追加到集合的指定索引位置
.get(int index)返回集合中指定位置的元素
.size()返回集合中的元素个数
.set(int index, Object obj)将指定索引元素进行修改
.remove(int index)从集合中删除指定索引元素,并返回该元素
.clear()清空集合中的所有元素

IO数据流

六字真诀:读进来,写出去。

字节流:可以处理任何文件数据。

字符流:只能处理纯文本文件数据。

import java.io.FileWriter //导包
public FileWriter(String filename){} //创建文件对象,参数中的字符串就是文件路径的名称。
两种常用的方法
public void writer(String str){} //写数据,参数就是想写入的内容
public void close(){} //关闭流

Tip:文件扩展名只能决定用哪一类软件打开文件,而不能决定其内容。

实现封装的方式

private :在当前类中可访问(私有)

default :在当前包内可访问

protected :在当前类和他的派生类中可访问

Tip:private私有,属于成员修饰符,不能修饰局部变量(即方法内部变量)。

并且用private修饰的变量不能被引用类型对象调用修改,由此就有了set、get方法的应用。

this和super关键字

this指向成员变量

super指向父类中的方法或量

重载

指一个类中创建同函数名不同参数的方法

覆盖(重写)是子类将父类中参数相同的同名方法重新定义

如果子类中需要引用原有的父类的方法或量,可以使用super关键字

子类继承、重写、覆盖父类方法时的注意事项

子类不能缩小父类方法的访问权限(必须保证子类权限大于父类权限),子类可以扩大的访问权限

(举个例子:儿子从父亲那儿继承一个东西,不能把那个东西变成自己的,不让自己的父亲再用。那肯定是不合理的嘛。)

一个类只能有一个直接父类,即java中只支持单继承(不能C继承A、B),但java支持多层继承(B继承A,C继承B,如果A、B中有重名变量或方法,用C对象只会调出上一层B中的该变量或方法)

接口

接口中只能定义抽象方法,且有固定格式,方法修饰符固定:

public abstract 返回值类型 方法名(参数列表){}
在接口中public abstract修饰符可以省略不写,
但是默认带有该权限

接口中只能定义常量:

public static final 数据类型 变量名 = 值;
同样在接口中public static final修饰符可以省略不写,
但是不写不等于没有,它的权限依旧是如此

Tips:

1.static修饰的量可以被类名直接调用

2.接口可以多实现(但是被实现的两个接口中不能有同名抽象方法):

public class C implements A,B{}

3.java支持接口间的多继承

多态

多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。(构造器没有多态性)

父类类型或接口类型 变量名 = new 子类的对象();
即父类引用变量指向子类对象

多态演示样例:

public class Test {
   public static void main(String[] args) {
      show(new Cat());  // 以 Cat 对象调用 show 方法
     show(new Dog());  // 以 Dog 对象调用 show 方法
            
     Animal a = new Cat();  // 向上转型
     a.eat();               // 调用的是 Cat 的 eat
     Cat c = (Cat)a;        // 向下转型
     c.work();        // 调用的是 Cat 的 work
    }
        
    public static void show(Animal a){
      a.eat();
        // 类型判断
        if (a instanceof Cat)  {  // 猫做的事情
            Cat c = (Cat)a;
            c.work();
        } else if (a instanceof Dog) { // 狗做的事情
            Dog c = (Dog)a;
            c.work();
        }
    }
}
 
abstract class Animal {
   abstract void eat();
}

class Cat extends Animal {
    public void eat() {
       System.out.println("吃鱼");
    }
    public void work() {
        System.out.println("抓老鼠");
    }
}

class Dog extends Animal {
   public void eat() {
       System.out.println("吃骨头");
   } 
    public void work() {
       System.out.println("看家");
    }
}

输出结果:

吃鱼
抓老鼠
吃骨头
看家
吃鱼
抓老鼠
多态的转型

向上转型(子类提升为父类类型,自动转换):

Person p = new Student;<br>

向下转型(方便多态对象调用子类的特有成员:

Student s = (student)p;

Tips:

1.多态有三个必要条件即前提:

①继承父类或实现接口

②重写

③父类引用指向子类对象

2.构造器没有多态性

3.多态成员的特点:编译时参考父类有没有这个变量或方法,没有则编译失败,当多态成员为对象调用方法时,运行的是父类中的变量值,而方法优先调用子类的重写方法。(即方法运行看右边子类,其他都看左边父类)

instanceof关键字

通过instanceof关键字来判断某个对象是否属于某种数据类型

boolean b = 对象 instanceof 数据类型:

封装、继承、多态作用总结

封装:

把对象的属性与方法实现细节隐藏,仅对外提供一些公共的访问方式

继承:

子类会自动拥有父类所有科技城的属性和方法。

多态:

配合继承与方法重写提高了代码的复用性和扩展性;如果没有方法重写,则多态同样没有意义。

关于Scanner的java.util.NoSuchElementException异常

具体异常报告代码例子

Exception in thread “main” java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)

在这里需要注意:

Scanner的close()方法会关闭全局全部输入流,所以只需要在最后的时候用close()关闭输入流就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值