欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java知识整理,java知识

来源: javaer 分享于  点击 19766 次 点评:202

Java知识整理,java知识


1.执行Java程序的步骤:
java源文件(.java)①→字节码文件(.class)②→特定机器的机器码
步骤①使用javac命令编译,Java编译器参与编译
步骤②使用java命令执行,Java虚拟机(JVM)参与执行
所以,Java的跨平台性体现在:字节码与平台无关,而不同平台的JVM都是不一样的

2.JDK,JVM,JRM三者的关系:
JDK:Java标准开发包,包含:Java编译器,JRE,常用Java类库等;
JRM:Java运行时环境,包含:JVM等其他运行Java所需环境(类加载器,字节码校验器,基础类库);
JVM:Java虚拟机,解释执行字节码,还负责管理数据,内存,寄存器;
(具体:指令集,类文件格式,栈,垃圾回收堆,寄存器,存储区)

3.把一个类放在包里的作用:
(1)区分名字相同的类,避免命名冲突;
(2)实施访问控制权限(protected:同包和子类;default:同包);
(3)管理和划分Java应用中不同的类,使项目逻辑结构清晰;

4.main()方法的书写:
(1)main()方法是每个Java程序的入口方法;
(2)main()方法一般书写为:
public static void main(String[] args){},public和static顺序可调换
(3)public和static:加载类时还没有对象,需要调用类来直接调用main方法,所以用public和static来定义;
(4)main()方法可以向上抛异常。eg.:throws IOException;

5.参数传递方式:
Java只有值传递,即使是引用变量,也是通过传递对象地址值的方式来操作对象;
Tips:包装类在进行操作时,会体现基础类型的性质,所以形参为包装类时,是无法通过其达到改变实参的目的的。
例如:

public class Stringtest
{
    public static void main(String[] args)
    {
        String s = "Java";
        Stringtest st = new Stringtest();
        st.stringAdd(s);
        System.out.println(s);//还是"Java"

    }
    public void stringAdd(String s)
    {
        s = s + "Hello";
    }
}

6.a += b 与 a = a + b 的区别:
a += b –> 返回的是a类型
a = a + b –> 返回类型是a类型与b类型中的最高类型

public class addTest
{
    public static void main(String[] args)
    {
        int i = 1;
        double d = 6;
        i += d ;//i=7
        i = i + d;//编译失败,无法将double类型数据赋值给int型   
    }
}

7.反码、补码和取反
(1)负数在内存中以补码的形式存储;
(2)负数的补码计算方式:先将原码取反(符号位不变)得出反码;再将反码+1求出补码;
(3)正数和负数的取反结果都是+1求其相反数:
例如:~9 = -10; ~-8 = 7
计算负数的取反结果时,需先求出其补码;

8.重载和重写:
(1)重载:同一个类中,方法名相同,形参不同(两同一不同);
重载的发生取决于 形参是否不同
(2)重写:子类较于父类,方法名和形参相同,抛出的异常和返回类型要小(或相等),存储权限要大(或相等)(两同两小一大);

9.接口和抽象类:
相同:
(1)都不可实例化,都位于继承树的顶端;
(2)实现接口或继承抽象类的普通子类都必须实现 抽象方法;
不同:
(1)接口提供的是各模块的标准;抽象类则是模板化设计;
(2)抽象类可以提供普通方法;
(3)接口不能定义静态方法,抽象类可以;

10:接口
(1)接口成员变量:只有静态常量,默认用public static final修饰,只能在定义时赋初值;接口直接调用
(2)接口方法:抽象方法,类方法,默认方法:
抽象方法:public abstrac修饰,无方法体;
类方法:public static修饰,接口直接调用;
默认方法:public default修饰,实现接口的类的实例调用;
(3)接口可继承多个接口,类可实现多个接口;

11:继承中,为什么父类的静态方法不能被子类重写?
重写只能适用于实例方法,不能用于静态方法;对于静态方法,只能隐藏;(形式上被重写,但没有多态特性,即父类变量引用子类对象时,使用父类变量调用静态方法,仍然调用的是父类的静态方法,而非子类的静态方法)
为什么?
(1)静态方法在类加载时被加载到内存中,并且在整个运行过程中保持不变(?);
(2)静态方法属于类,所以看似重写,其实调用的时候还是所属的类去调用;

12:继承和组合

相关文章

    暂无相关文章
相关栏目:

用户点评