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

Java 基础知识,

来源: javaer 分享于  点击 49283 次 点评:145

Java 基础知识,


一.==与equals区别


java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
   他们之间的比较,应用双等号(==),比较的是他们的值。 
2.复合数据类型(类) 
       当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 

       JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。  对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。对于字符串String类来说,它的equals方法用来比较字符串的字符序列是否完全相等。


二.如何用BigDecimal类进行精确运算


        Java的简单浮点类型float和double在进行精确的算术运算的时候,例如,进行货币金额的计算,是不能得到准确的结果的。例如:

public static void main(String[] args) {  
        
        System.out.println(0.05+0.01);
        System.out.println(1.0-0.42);
        System.out.println(4.015*100);
        System.out.println(123.3/100);
 }  

输出结果:

0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999

以上的记过肯定不是开发者想要的,使用BigDecimal类可以解决以上问题,主要分为以下步骤:

 (1)用float或double变量构建BigDecimal对象。

 (2)通过调用BigDecimal的加减乘除等相应的方法进行算术运算。

 (3)把BigDecimal对象转换成float、double、int等类型。

         根据以上步骤,编写了工具类,请参考这篇文章:

 http://blog.csdn.net/dingqinghu/article/details/46608863


三.Java的访问控制


        (1) 在java中有public、protected、private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类、变量等前没加显示的可见性修饰符,那它就是package级别的。如果在类的定义中没有指定package,那么java会把它放在缺省包中,一般来说这个缺省的包就是当前目录。

(2) 在子类中的方法如果重载了父类的方法,那么该方法的可见级别应更底或者相同,如父类中的方法是public,那么子类中方法必须是public。
(3) 在java中,一般来说,变量成员最好是private,对它们的访问可以通过public的方法,在这些方法中可以做些控制以保证数据的一致性。这些方法名一般以get和set做为前缀。


可见/访问性 类内部 本包 本包子类中   外部包子类中
外部包中 
 public  yes  yes  yes  yes  yes
 protected   yes  yes  yes  yes  no
 package   yes  yes  yes  no  no
 private  yes   no  no  no  no


1.类(class)
              可见性修饰符: public―在所有类中可见,在其他包中可以用import导入。
              缺省―就是没有修饰符,在同一个包中的类中可见,在其他包中不能用import导入。
              修饰符:final―终态类,表示该类不能被继承 
                            abstract―抽象类,不能新建对象 
2.变量(variable)
Java中变量有两种,方法变量和字段变量
方法变量只能用一个修饰符:final―表示常量,不能修改
下面是字段变量的修饰符
        可见性修饰符:public―在任何类中可见
                               protected―       在子类中或同一个包中可见
                                 private―只在本类中可见,子类中也不可见
                                 缺省―在同一个包中可见,子类不在一个包中,子类中也不可见   
        修饰符:static―静态变量,被类的所有实例共享
                      final―常量,定义后不能修改
*transient―告诉编译器,在类对象序列化的时候,此变量不需要持久保存 
*volatile―指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理 
这两带*的不是很常用,但也是Java的修饰符,我也不是很清楚
3.方法(method)
   可见性修饰符:public―在任何类中可见
                             protected ―在子类中或同一个包中可见
                             private―只在本类中可见,子类中也不可见
                                   缺省―在同一个包中可见,子类不在一个包中,子类中也不可见
   修饰符: static―静态方法,并不需要创建类的实例就可以访问静态方法
                   final―常方法,所有子类不能覆盖该方法,但可以重载
                   abstract―抽象方法,在抽象类中没有实现的方法
                   native―本地方法,参见Java Native Interface(JNI) 
   synchronized ―在多线程中,synchronized方法调用时,其他所有方法不能调用该方法
3. 接口(interface)
         可见性修饰符:public―所有类中可见
                       缺省―同一个包中可见
         接口中的变量总是需要定义为“ public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样。接口中的方法只能使用public和abstract修饰符。





相关文章

    暂无相关文章
相关栏目:

用户点评