java基础知识
Posted hijackhou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础知识相关的知识,希望对你有一定的参考价值。
一、Java虚拟机
JVM (java Virtual Machine)
- 平台无关性 :平台(硬件+软件<操作系统>)
- 安全性: 沙箱(放置不可靠java程序)
- 网络移动性: Java Applet(Java 小应用)
抽象规范
一个具体实现
一个运行中的虚拟机实例
运行时java虚拟机(JVM)天职:负责运行一个Java程序
1、JVM体系结构
封装:(类内的私有属性)
访问私有对象方法:
- 将属性私有化(private)
- 为私有属性添加getter和setter方法(如果有需要的话,可在方法中加入业务逻辑-限制使用)
常见Bean结构
- 构造器
- 属性
- 生成方法(getter和setter方法)
2、static(修饰符)
只修饰类成员,不修饰局部变量
- 属性 -类共享
- 方法
- 块 (只执行一次)执行最快,(常用于加载一次外部数据,eg配置文件)
静态属性
- 所有对象共享(类变量)
- 访问: 类名.属性, 非静态属性:对象名(实例).属性
静态方法(static function)
- 可直接访问静态变量,如要访问非静态变量,必须先实例化
- 静态方法不能用this
- 静态方法不能被非静态方法覆盖
访问方式:类名.方法名()
实例化后的对象访问 对象名.方法名()
二、类的继承
Java中单继承:一个类只能有一个父类
格式: 修饰符 class 子类名 extends 父类名
1、子类:派生类 父类:基类
- 子类可以继承父类的私有属性,但却用不了
- 子类实例化:先实例化父类,然后实例化子类
super()
作用:调用父类的构造器
只出现在子类的构造器,必须第一行
this()
作用:只调用本类构造器,第一行
super 对父类的引用 ||this 子类自己的引用
2、方法的覆盖(Override/Overwrite)
方法重写
- 要求子类继承父类
- 要求子类的方法与父类的方法签名()完全一致
3、关键字 final
修饰对象
- 变量(属性、局部变量、形参):不能重新赋值---(在声明时或者构造器中赋值)
- 方法:不能被覆盖,不能被修改,
常配合static修饰符使用
对于基本类型,不可变指的是值;
对于引用类型,不可变指的是引用地址,引用的值可变
常量命名字母要求大写
4、抽象类
含有抽象方法的类声明为抽象类
//格式:
public abstract class ClassName
public abstract void methodName()
继承抽象父类的子类必须重写抽象方法
抽象类需要构造器(给子类使用)
- 不能实例化
- 其包含的抽象方法必须在其子类实现,否则该子类只能声明为abstract
- 抽象方法不能为static
- 抽象类中可以没有抽象方法,但有抽象方法的类一定时抽象类
抽象父类
- 起约束的作用,从设计角度
- 声明了一个规范
5、引用数据类型的转换(类之间)
前提:具有继承关系
原则:子类就是父类
向上造型
子类转换为父类,自动转换
- 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能
- 所有的子类都可以替换为父类的对象
- 子类 is a 父类
向下造型-CAST(强制转换)
父类对象必须是经过向上造型的对象
向上转换损失了子类新扩展的属性与方法,仅剩父类声明的属性与方法
三、接口
1、多态
同一个动作,根据不同对象使产生不一样的结果
遵守引用类型的转换规则
赋值多态/传参多态
作用:
- 1、方便程序系统的扩展
- 2、利于系统后期的维护
2、接口(Interface)
public interface IntfName
public class ClassName implements IntfName
不是一个类,不能实例化
常量、抽象方法的集合
一套规范、一套行为协议
若一个类要实现一个接口,那这个类必须实现接口中的所有抽象方法,否则这个类只能声明为抽象类
- 接口中定义的变量都是公共静态变量
- 接口中没有自己的构造函数,而且接口中定义的方法全部都是抽象方法,即只提供方法的定义,没有提供方法的具体实现
- 接口采用多继承制,而不像类一样采用单继承机制
public interface InterfaceName{
public returnDataType method1Name(InParamType in);
public returnDataType method2Name(InParamType in);
...
}
四、异常处理
抛出异常结构图如下;
处理方式:
- try/catch 块
- 抛出
1、可以有多个catch块来处理不同类型异常
2、没有try块,catch块不能存在
3、如果程序抛出多个异常,需要多个catch块来处理
4、出现异常后,后面的语句不执行
4.2、finally块 (try/catch 块之后存在)
关闭流,关闭连接、释放资源
不论是否发生异常,都会执行finally块。(执行try/catch 块后)
4.3、throw语句
抛异常:(开发:分层次开发)
throws
标识该方法可能会产生的异常类型
作用:声明一个成员函数可能抛出的各种异常
位置:函数头的后面
五、常见API与常用类
1、用import导入包
//导入包中所有类
import package_name.*;
//导入单个类
import package_name.class_name;
2、JDK常用包
java.lang (java语言包)自动导入
java.util 实用工具(list、calendar、date所需的类和接口)
java.awt 图形用户
java.io
java.net (TCP/IP 类/接口)
java.sql (数据库访问包)
3、包装类
对基本数据类型进行包装(基本数据类型可通过构造器转换为包装类)
- boolean --> Boolean
Boolean b=new Boolean(true);
- int --> Integer
//Integer有个parseInt方法把String转换为int
int i=Integer.parseInt(String);
- ......
4、String类
代表一组不可改变的unicode字符序列
equals() 是Object类的方法
- equals() 在String类中比较字符串相等
- equals() 在其他引用类中比较地址
String类常用方法
//返回全大写字符串
public String toUpperCase();
//返回全小写字符串
public String toLowerCase();
//截取字符串
public boolean subString(int startIndex)
//
public char charAt(int index)
//
public int Indexof(char ch)
//
public String trim()
//
public int length()
replace、split、startWith、endWith、contains
5、Object类
所有类的父类
- 1、在Object类中定义的方法在所有类中都可以使用
- 2、一个类可以不是Object类的直接子类,但一定是Object类的子类,Java中的每一个子类都是从Object类扩展来的
- 3、Object类 Java语言中唯一一个没父类的类
Object类常用方法
//返回16进制整数,唯一标识一个对象
public int hashCode();
//返回 类名@hashCode
public String toString();
//比较两个对象引用的值是否相等(比较地址)
public boolean equals(Object obj)
以上是关于java基础知识的主要内容,如果未能解决你的问题,请参考以下文章