Java基础1

Posted _裸奔到月球

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础1相关的知识,希望对你有一定的参考价值。

  

  

  1、Java变量类型:成员变量、局部变量、静态变量

修饰符public、private、protected、default只能修饰成员变量,不能修饰局部变量。

private、protected不能用来修饰类,只有public、abstract、或final可以修饰类。

  2、Java中的接口没有任何方法:这些接口又被声明为标识接口,表明实现它的类属于一个特殊类型(A instanceof B)。

接口的成员修饰符都是public,方法只能用public和abstract修饰,常量默认public static final修饰。

  3、Java在处理基本数据类型的时候(int,char),采取的是按值传递,除此之外的其他类型都是按照按引用传递(类似指针,修改对象的值后和原对象同步),=也是按引用传递。

可以通过clone来实现一个对象的复制,首先实现cloneable接口,然后重写clone方法。

  4、进行深度clone时,需要对类里的对象成员进行clone。(obj.birth = this.getBirth().clone())

  5、面向对象:

    特征:继承,多态,封装,(抽象)

    多态的2中机制:运行时多态(通过子类覆盖父类方法实现,运行时指向正在运行的对象的方法)和编译时多态(通过方法的重载(同方法名,不同方法参数个数,类型,顺序)实现),成员变量无法实现多态。

  6、抽象类和接口:

    抽象类的抽象方法不能用private、synchronized,static和native修饰。接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类。

  7、内部类:

    静态内部类:static class A--只能访问外部类的静态成员和静态方法,包括私有。

    成员内部类:非静态内部类不能有静态成员。

    局部内部类:放在外部类的方法里,和局部变量一样,局部内部类不能用public,static等修饰,只能访问方法里定义为final类型的变量。

    匿名内部类。没有构造函数,不能有静态成员,方法和类,此外其也是一个局部内部类  

  8、getClass在Object中被定义为final与native,多态。子类构造方法要调用父类的构造方法,super必须是在该该方法第一行。

  9、标识符:

    必须由字母,数字,下划线和$组成,且数字不能作为标识符开头。

  10、Java中没有全局的概念,但通过static可以实现相同的作用。不能在方法中定义static变量

  11、switch()只能跟String或者int:switch(){case str: ...;break;}

  12、volatile是一个类型修饰符,用来修饰被不同线程访问和修改的变量,被它定义的变量都是直接到内存去取而不是缓存。

  13、原始数据类型:char2(unicode字符)、int4、float4、double8、long8、boolean1、short2、byte1 初始值为0

    引用数据类型:数组、类、接口。初始值为null,存储的是地址值

  14、不可变类

      指创建了这个类了,不能再修改它的值,即它的成员变量。成员变量都是private的,方法只有构造方法,所有方法不会被覆盖。可以通过clone改变这个类。

  15、值传递和引用传递:

    值传递:形参只是实参值初始化一个临时的存储单元,因此形参和实参虽然拥有相同的值,但是有着不同的存储单元,对形参的改变不会影响实参。

    引用传递:传递的是对象的地址,因此形参和实参指向同一个存储单元,对形参的修改会音响到实参的值。但在函数内部对形参进行幅值操作,可能不会影响到实参值。

    另:包装类(Integer等):还是按照按引用传递,由于包装类是不可变类,会创建一个新的值赋给它。如Integer a = 1;Integer b = a;b++; (a=1,b=2)

  16、数据转换由低精度向高精度自动转换、char会转换成对应ASII码,基本数据类型和boolean不能相互转换。进行运算时,会先把符号数先转换为int型。round函数相当于加0.5再向下取整,负数的移位操作是在最高位补1.且先转换成32位的int值再进行截取。

  17、英文占1个字节,中文占2个字节

  18、String的创建和存储

    只要用到new就会生成新额对象(即定义变量后,引用地址不同)。

    jvm有个字符串常量池,若创建的字符串不在池里,则创建这个对象,并添加到池里,返回它的引用。在调用new String时,传递了一个池中的字符串常量。

  19、“==”用来比较两个变量对应内存中所存储的值是否相同,不能比较引用的对象内部内容是否相等

    equals:Object的方法,没有覆盖的情况下和==相同,即比较引用变量是否指向同一个对象。

    hashcode:返回对象(貌似不再是引用变量的值,而是其所指向对象本身)在内存中地址转换成的一个int值。

    String是不可变类,StringBuffer(字符缓冲区)是可变类,多线程;StringBuilder是单线程

  20、数组提供length来获得长度,字符创用length()方法获得,泛型集合用size获得长度。

    finally是在return语句之前执行的,若finally里也有return,则覆盖其他的。此外,return在返回时返回的时复制一份的值并存到栈中,然后再return这个变量。若是引用类型的数据,语句结束前修改这个变量会影响到返回的值,基本数据则不会。

    finally也不是一定会执行的,如强制退出或进入trycatch前出错。

以上是关于Java基础1的主要内容,如果未能解决你的问题,请参考以下文章

1java基础回顾与加强

1Java基础概念

Java面试题总结 1Java基础篇(附答案)

Java基础1Java开发工具包JDK

Java核心基础(30天入门)笔记

1Java简介