Java基础知识
1:数据类型
基本数据类型——内置数据类型
byte(8位):-128-127
short(16位):-32768-32767
int(32位)
long(64位)
float(32位)
double(64位)
boolean(默认值是false)
char(16位Unicode字符)——Unicode字符:是一种重要的交互和显示的通用字符编码标准,可以适用于所有已知的编码。
内置数据类型互相比较时,比较的时它们的值。
非基本数据类型——复合数据类型
String
Integer
Date
复合数据类型在进行比较时,比较的是它们在内存中存放的地址。当它们是同一个new出来的对象时,比较结果围殴true,否则为false。
Java常量
常量在程序运行时是不能被修改的的
用final关键字来修饰常量:final double PI=3.1415927;
2:进制前缀
前缀0:8进制
前缀0x:16进制
默认十进制
3:变量类型
类变量(静态变量)——独立于方法之外的变量,用static修饰
在类中以static关键字声明,必须声明在方法之外
无论类创建了多少个对象,类只拥有类变量的一份拷贝
静态变量除了被声明为常量外很少使用,静态变量初始化后不可改变
静态变量存储在静态存储区,经常被声明为常量,很少单独使用static声明变量
静态变量在第一次被访问时创建,在程序结束时销毁
import java.io.*;
public class Employee{
private static double salary;
public static String DEPARTMENT="开发人员";
public static void main(String[] args){
salary=10000;
System.out.println(DEPARTMENT+"平均工资:"+Salary);
}
}
实列变量——独立于方法之外的变量,不过没有static修饰
实例变量声明在一个类中,但在方法、构造方法和语句块之外
当一个对象被实例化之后,每个实例变量的值就跟着确定
实例变量在对象创建的时候创建,在对象被销毁的时候销毁
实例变量的值至少被一个方法、构造方法或语句块引用,使得外部能够通过这些方式获取实例变量信息
实例变量可以声明在使用前或者使用后
访问修饰符可以修饰实例变量
import java.io*;
public class Employee{
public String name;
private double salary;
public Employee(String empName){
name=empName;
}
public void setSalary(double empSal){
salary=empSal;
}
public void printEmp(){
System.out.println("名字:"+name);
System.out.pringtln("薪水:"+salary);
}
public static void main(String args[]){
Employee empOne=new("RUSH");
empOne.setSalary(88888.88);
empOne.printEmp();
}
}
局部变量——类方法中的变量
局部变量声明在方法、构造方法或语句块中
局部变量在方法、构造方法、或者语句块被执行的时候创建,当他们执行完成后,变量将会被销毁
访问修饰符不能用于局部变量
局部变量是在栈上分配的
局部变量没有默认值,所以局部变量被声明后,必须经过初始化 才可以使用
import java.io.*;
public class Test{
public void pupAge(){
int age=0;
age=age+7;
System.out.println("小狗的年龄是:"+age);
}
public static void main(String ags[]){
Test test=new Test();
test.pupAge();
}
}
4:java修饰符
访问修饰符
default(默认):在同一包内可见,不适用任何修饰符
private:在同一类中可见。使用对象:变量、方法。不能修饰类,接口
public:对所有类可见。
protect:对同一包内的类和所有子类可见。不能修饰类,接口
访问控制和继承
父类中声明为public的方法在子类中也必须为public
父类中声明为protected的方法在子类不能声明为private
父类中的private方法不能够被子类继承
非访问修饰符
static:用来修饰类方法和类变量
final:用来修饰类、方法和变量,所修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract:用来创建抽象类和抽象方法。抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类的扩充。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则出现编译错误。抽象类可以包含抽象方法和非抽象方法,抽象方法的具体实现由子类提供。
synchronized(同步)和volatile(异变的):主要用于线程的编程
synchronized声明的方法同一时间只能被一个线程访问
volatile修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。并且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。
5:Java方法
Java方法是语句的集合,它们在一起执行一个功能
方法的重载
一个类的两个方法拥有相同的名字,但是有不同的参数列表
构造方法
构造方法用来初始化该对象
构造方法和它所在的类的名字相同,但构造方法没有返回值
所有类都有构造方法,Java自动提供了一个默认的构造方法,其访问修饰符与该类的访问修饰符相同,一旦定义了自己的构造方法,默认的构造方法会失效
6:Java异常处理
引起异常的类型有:检查性异常、运行时异常、错误
检查性异常:用户错误或问题引的异常。如打开一个不存在的文件
运行时异常:与检查性异常相反,运行异常可以在编译时被忽略
错误:错误不是异常,而是脱离程序员控制的问题
声明自定义异常
所有异常都必须时Throwable的子类
如果希望写一个检查性异常类,则需继承Exception类
如果希望写一个运行时异常类,则需要继承RuntimeException类
7:Java继承
概念
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承的方法,使得子类具有父类相同的行为。
继承类型
Java不支持多继承,但支持多重继承
类型:单继承、多重继承、不同类继承同一类
继承的特性
子列拥有父类非private的属性、方法
子类可以对父类进行扩展
子类可以用自己的方式实现父类的方法
提高了类之间的耦合性——继承的缺点(耦合性越高,代码独立性越差)
继承关键字
extends:extend只能继承一个类,因为在Java中,类的继承是单一继承
implements:可以变相具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口。
public interface A{
public void eat();
public void sleep();
}
public interface B{
public void show();
}
public class C