面向对象程序设计JAVA期末重点知识

目录

Java的基本数据类型有?运算符的优先级的顺序为?什么是自动类型转换,强制类型的转换?以及基本数据类型对应的包装类有?

Java的程序入口及写法

一维数组及二维数组的声明及使用

抽象类与接口的特点与异同

接口中如何声明常量

JAVA标识符

JAVA运行机制

Java面向对象的三大特征是什么

继承的概念与特点

多态的概念及特征,使用多态的几个条件是什么?使用多态的优点和缺点

向上转型

 方法重写overrider及方法重载overload的特征及含义

异常的处理方式

JDBC连接数据库的步骤有哪些


Java的基本数据类型有?运算符的优先级的顺序为?什么是自动类型转换,强制类型的转换?以及基本数据类型对应的包装类有?

基本数据类型:

整型:byte , short, int , long 。

字符型:char。

浮点型:float , double 。

布尔型:boolean 。

变量声明:

	//整型
	byte b=1;	
	short s=2;
	int i=3;
	long l=4;
	//字符型
	char c='c';
	//浮点型
	float f=5;
	double d=6;
	//布尔型
	boolean flag=true;

运算符优先级:


 

类型转换

转换规则如图所示
精度高的数据类型就像容量大的杯子,可以放更大的数据
精度低的数据类型就像容量小的杯子,只能放更小的数据
小杯子往大杯子里倒东西,大杯子怎么都放得下
大杯子往小杯子里倒东西,有的时候放的下,有的时候就会有溢出
需要注意的一点是
虽然short和char都是16位的,长度是一样的
但是彼此之间,依然需要进行强制转换

	int i=1;
	long l=i;//自然转换
	byte b=(byte) i;//强制转换

自动类型转换:
l 是long类型的,其类型长度是64位
i 是int类型的,其类型长度是32位
所以l的精度,比i的精度要高
l = i;
把i的值赋给l, 首先l和i彼此的类型是不一样的,那么能否转换就取决于彼此的精度
这个例子,是低精度向高精度转换 是可以正常转换的
换句话说,int比较小,要放进比较大的long,随便怎么样,都放的进去

强制类型转换:

b的类型是byte,其长度是8,最大只能放127
i 的类型是int, 其长度是32,最大,远远超过127
所以, 把int类型的数据转成为byte类型的数据,是有风险的
有的时候是可以转换的,比如 b = i1 (i1=10);
有的时候不可以转换 比如 b= i2 (i2=300) 因为放不下了
编译器就会提示错误
这个时候就只能采用强制转换,强制转换的意思就是,转是可以转的,但是不对转换之后的值负责。 风险自担,后果自负

基本数据类型对应的包装类:

基本数据类型:

byte short int long float double char boolean

对应的包装类:

Byte Short Integer Long Float Double Character Boolean

Java的程序入口及写法

只有main方法可以作为程序的入口。

public static void main(String[] args) {

}

 只有一个类里有main方法,才可以被执行。

一维数组及二维数组的声明及使用

一维数组:

	int arr1[]=new int[10];
	int []arr2=new int[10];
	int []arr3=new int[10];
	int arr4[]= {1,2,3};
	char c[]= {'a','B','c'};

二维数组:

	int arr1[][]=new int [5][5];
	int [][]arr2=new int [5][5];
	int []arr3[]=new int [5][5];
	int arr4[][]= {
   
   {1,2,3},{1,2,3,4}};

抽象类与接口的特点与异同

抽象类特点:

1.抽象类和抽象方法必须使用abstract关键字修饰

2.抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类

3.抽象类不能实例化(new)

4.抽象类的子类,要么重写抽象类中的所有抽象方法,要么是抽象类

5.抽象方法不能被private/static/final单独修饰,因为抽象方法要被重写

6.抽象方法不能被final关键字修饰,因为最终类(被final关键字修饰的类)不能被继承

7.抽象方法可以重载8.抽闲类的目的就是为了延展类的继承结构


接口特点:

1.接口本质不是类

2.接口里的方法都是抽象方法

3.接口不可以定义构造方法

4.接口不可以创建对象(不能实例化)

5.接口关键字implement

6.接口的目的是让实现类注入更多的特性

相同点:

  1. 不能实例化;
  2. 包含未实现的方法声明;

(3)派生类必须实现未实现的方法;

不同点:

(1)抽象类与子类之间采用单继承机制、一个类实现多个接口则可以实现多重继承;

(2)抽象类中可以声明成员变量,子类可以对该成员变量赋值,接口只能是常量;

(3)抽象类中可以包含非抽象方法,而接口中不能包含;

接口中如何声明常量

接口当中也可以定义“成员变量”,但是必须使用 public static final 三个关键字进行修饰。
从效果上看,这其实就是接口的【常量】。

格式:

public static final 数据类型 常量名称 = 数据值;

注: 一旦使用final关键字进行修饰,说明不可改变。

注意事项;

1.接口当中的常量,可以省略public static final ,注意:不写也照样表达这个意思。

2.接口当中的常量,必须进行赋值:不能不赋值。

3.接口中常量的名称,使用完全大写的字母,用下划线进行分隔。(推荐这种命名规则)

public interface info {

public final static int MAX_VALUE=100;	

public void info1();

int info2();

}

JAVA标识符

标识符就是程序员在编写 Java 程序时,自定义的一些名字。例如第一个Java 程序里关键字 class 后跟的 HelloWorld,就是我们自定义的类名。类名就属于标识符的一种。

1、标识符的作用

常量、变量、方法、类和包等的名称。

2、命名规则

必须以字母、_下划线、美元符$开头。

其他部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。大小写敏感,长度无限制,不可以是Java的关键字。

3、注意细节

Java不采用通常语言使用的ASCII字符集。

Java采用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉字等等。(不建议使用汉字来定义标识符!)

4、关键字/保留字

Java关键字是Java语言保留供内部使用的,如class用于定义类。关键字也可以称作保留字,他们的意思是一样的。

JAVA运行机制

 JVM:

 全名 Java Virtual Machine              Java虚拟机

它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成,

使用软件在不同操作系统中,模拟相同的环境(java实现跨平台的根本原因)
JRE:

 全名 Java Runtime Environment    Java运行环境           

包含JVM和解释器和Java 的一些基本类库,完整的Java运行环境
 JDK:

 全名叫做 Java Development Kit     Java开发环境
 包含了 JRE 、 Java 核心类库、开发工具包(编译器 + 调试工具)
  jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。
Java 程序的执行分为两步:编译、运行

在Java的运行环境中,JRE包括JVM和Java的核心类库 将 Java 源程序,编译为 .class 字节码文件。

将 .class 文件时会立即在计算机内存里面创建一个JVM,在加载到 JVM 虚拟机中,执行。

jAVA垃圾回收机制

在系统运行过程中,会产生一些无用的对象,这些对象占据着一定的内存,如果不对这些对象清理回收无用对象的内存,可能会导致内存的耗尽,所以垃圾回收机制回收的是内存。

Java面向对象的三大特征是什么

封装,继承,多态

继承的概念与特点

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

特点:

(1)继承关系是传递的。若类C继承类B,类B继承类A(多层继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。

(2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。

(3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

(4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

(5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。

多态的概念及特征,使用多态的几个条件是什么?使用多态的优点和缺点

就是一个对象在不同时刻表现得不同状态

多态的前提:

(1).有方法重写

(2),有继承/实现关系

(3).有父类指向子类对象

多态的成员访问特点:

成员变量:编译看左边,执行也看左边(也就是说只有父类和子类里面都有的成员变量才能够编译成功,如果只有子类里面有,而父类里面没有这个变量,则不可以编译成功)

成员方法 :编译看左边,执行看右边(同上,只有父类和子类同时存在一个同名的方法,也就是方法重写,才能够通过编译,而与上面不同的是执行的是子类里的方法,原因就是成员变量不能重写,而方法可以)

可替换性,可扩展性,接口性,灵活性,简化性

多态的好处和弊端:

好处:提高了程序的延展性,就是在定义方法的时候,以父类作为参数,用子类参与操作,(相同的方法)

弊端:不能获得子类特有的方法

向上转型

向上转型,JAVA中的一种调用方式。向上转型是对A的对象的方法的扩充,即A的对象可访问B从A中继承来的和B“重写”A的方法。

instanceof Hero 判断一个引用所指向的对象

public class Hero {
    public String name; 
    protected float hp;
     
    public static void main(String[] args) {
        ADHero ad = new ADHero();
        APHero ap = new APHero();
        
        Hero h1= ad;
        Hero h2= ap;
        
        //判断引用h1指向的对象,是否是ADHero类型
        System.out.println(h1 instanceof ADHero);
        
        //判断引用h2指向的对象,是否是APHero类型
        System.out.println(h2 instanceof APHero);
        
        //判断引用h1指向的对象,是否是Hero的子类型
        System.out.println(h1 instanceof Hero);
    }
}

 方法重写overrider及方法重载overload的特征及含义

重载

从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。在Java中同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。这种情况下,该方法就被称为重载,这个过程称为方法重载;其实我通俗的理解就是省了给method重新命名了,差不多的都用一个。

重载好处
好处就是不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。

重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。

重写

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。

重写特征

  • 1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)
  • 2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
  • 3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

1.Override(重写)

  两同,两小,一大

  两同:方法名相同,参数列表相同

  两小:抛出的异常要小于等于父类,返回值类型要小于等于父类

  一大:访问权限要大于等于父类

2.Overload(重载)

  方法名相同,参数列表不同,其他(访问权限,返回值)随意

重写方法的规则:

  (1)参数列表必须完全与被重写的方法相同。

  (2)返回的类型必须与被重写的方法的返回类型相同。

  (3)访问修饰符的限制一定要大于被重写方法的访问修饰符。

          (public>protected>default>private)

  (4)重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

 重载的规则:

  (1)必须具有不同的参数列表;

  (2)可以有不同的返回类型,只要参数列表不同就可以了;

  (3)可以有不同的访问修饰符;

  (4)可以抛出不同的异常;

异常的处理方式

 当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出
当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常
大家可以结合生活中的例子:如果工作中遇到了问题,我们可以选择自己处理(捕获),或者交给上级处理

异常处理常见手段: try catch finally throws。

JDBC连接数据库的步骤有哪些

jdbc连接数据库的步骤:

1、加载jdbc驱动程序;

2、创建数据库的连接;

3、创建Statement;

4、执行SQL语句;

5、遍历结果集

;6、处理异常,关闭JDBC对象资源。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class main {
public static void main(String[] args) throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver");//第一步,加载驱动
String url="jdbc:oracle:thin:@localhost:1521:gfs"; 
String user="system";   //user是数据库的用户名
String password="HeXu0607";  //用户登录密码
Connection connection=DriverManager.getConnection(url,url,password);//第二步,建立连接
Statement statement=connection.createStatement();//第三步,创建Statement
String sql="select * from admin";
ResultSet resultSet=statement.executeQuery(sql);//第四步,执行SQL语句//第五步,获取结果集
String name=resultSet.getString(1);
String pass=resultSet.getString(2);
resultSet.close();//第六步关闭连接
statement.close();
connection.close();
}
}

猜你喜欢

转载自blog.csdn.net/weixin_52473454/article/details/125262554