java基础学习
八大基本数据类型
-
java属于强类型语言
byte 占一个字节范围 : -128~127
short 占2个: -32768~32767
int 占 4个
long 占8个
float 占4个
double 占8个
boolean 占1位,值?1:0
//整数 int num1 = 10; //常用 byte num2 = 20; short num3 = 30; long num4 = 30L//long类型数据需要标注'L' //小数:浮点数 float num5 = 50.1F;//float类型数据需要标注'L' double num6 = 3.1415; //字符 char name='天'; //字符串,String不是关键字。类 //布尔值 boolean flag = true;
Scanner对象
-
通过Scanner类获取用户的输入
基本语法
//从键盘接收数据 Scanner s = new Scanner(System.in);
-
通过Scanner类的next() 、nextLine()方法,读取前一般 需要用hasNext()与 hasNextLine()判断是否还有输入的数据。
-
IO类需要关闭,释放资源
scanner.close();
参数
-
重载函数
-
可变参数(可变参数必须放在最后 一个 )
public void test(int... i){ }
数组
-
栈和堆的分析
堆:存放new的对象和数组
可以被所有的线程共享,不会存放别的对象引用
栈:存放基本变量类型(包含具体数值)
引用对象的变量(存放这个引用在堆里的具体地址)
方法区:可以被所有的线程共享(包含所有的class和static变量)
//第一步会把array存放在栈中,2会在堆中声明一个区,用于存放10个数组 //1.声明数组 int[] array = null; //2.创建数组 array = new int[10];//动态初始化,默认值0
面向对象
-
本质:以类的方式组织代码,以对象的组织(封装)数据。
-
三大特性
-
封装。封装是指将对象的属性和操作整合为一个独立的整体,并尽可能地隐藏对象内部的实现细节。通过访问修饰符来控制对数据的访问权限,只暴露必要的接口给外部使用。这样的设计可以提高代码的安全性和可维护性,同时也方便了代码的复用和扩展。134567
-
继承。继承是指一个类可以继承另一个类的属性和方法。通过继承,子类可以拥有父类的属性和方法,并且可以在此基础上进行扩展和修改。继承可以实现代码的重用,减少重复编写相似的代码,同时也体现了类之间的层次关系,可以实现多态性。
-
多态。多态是指同一种行为具有多种不同的表现形式。在Java中,多态可以通过方法的重写和重载来实现。方法的重写是指子类可以重写父类的方法,从而改变方法的行为;方法的重载是指在一个类中可以定义多个同名但参数列表不同的方法,根据传入的参数类型和个数来确定调用哪个方法。多态可以提高代码的灵活性和可扩展性,使得程序更加易于维护和扩展。
类与对象的关系
-
类是一种抽象的数据类型,是对某一类事务整体定义,但是并不能代表某一个具体个列
-
对象是抽象概念的具体实列
构造器
-
使用new关键字,必须有构造器(无参构造、有参构造)
-
和类名相同,没有返回值
封装(高内聚,低耦合)
-
高内聚:类内部数据操作细节独自完成,不允许外部干涉;低耦合:仅暴露少量方法给外部使用。
继承
-
子类继承父类,使用关键字extends表示,是父类的扩展。
在java中,所有类默认继承Object类。
-
super
super只能出现在子类ii的方法或者构造方法,super和this不能同时调用构造方法。
-
方法重写(子类重写父类的方法)
本质:子类继承父类的方法后,由于父类的方法不满足子类的需求,子类重新书写该方法
方法名必须相同
参数列表必须相同,返回值也需相同(否则 重载)
修饰符:范围可以扩大但不能缩小: public>protected>Default>private
抛出的异常:范围,可以缩小,但不能扩大。
抽象
-
抽象方法,只有方法名字,没有方法的实现。不能new抽象类,只能靠子类去实现。
接口(约束和实现分离)
-
作用:
-
接口中定义方法默认抽象。需要在实现类中定义方法体接口可以实现多继承。
-
接口不能被实列化,没有构造方法。
内部类
1.成员内部类
通过外部类实现内部类
Outer.Inner inner = outer.new Inner();
异常
-
异常类实现结构图
-
异常类分类示意图
一)Error类代表了编译和系统的错误,不允许捕获;
(二)Exception类代表了标准Java库方法所激发的异常。
1、运行异常类RuntimeException (1)Java程序在运行时产生的由解释器引发的各种异常。 (2)Java语言中的运行异常不一定被捕获。 2、非运行时异常 (1)Java编译器检测的异常。 (2)要么使用try-catch语句进行捕获,要么用throw子句抛出,否则编译无法通过。