美文网首页
自学JAVA的深入学习之路---0

自学JAVA的深入学习之路---0

作者: 思而忧 | 来源:发表于2017-07-11 20:49 被阅读0次

    简介:本人一开始是学嵌入式C语言方便的,4个月前转来学WEB方面的东西。学过c/c++, python, JAVA。已经学了JAVA一部分的相关知识了,也写过一些小小的程序,但是后来写大一点的项目的时候发现自己的代码太乱,思路不够清晰,代码也不够简洁易懂,所以翻开《JAVA编程思想》深入学习JAVA编程。文章不会把一些基础的东西讲得太详细,不是JAVA教程。


    关于对象

    • JAVA在所有平台的基本数据类型所占用的存储空间都是一样的(例如:c/c++在不同的平台x86/x64的int类型占用的字节数不一样。),所以JAVA的可移植性很强。
    基本类型 大小 最小值 最大值 包装类型
    boolean - - - Boolean
    char 16-bit Unicode 0 Unicode 2^16-1 character
    byte 8 bits -128 +127 Byte
    short 16 bits -2^15 +2^15-1 Short
    int 32 bits -2^31 +2^31-1 Integer
    long 64 bits -2^63 +2^63 -1 Long
    float 32 bits IEEE754 IEEE754 Float
    double 64 bits IEEE754 IEEE754 Double
    void - - - Void

    所有的数据类型都是有正负号的,不用去寻找无符号的数值类型(我在嵌入式c语言中经常用到无符号的数据类型,32位的ARM CPU性能有限。)
    String 不是基本的数据类型,char才是。
    基本数据类型在创建以后如果没有初始化,JAVA会自动给一个默认的数值。

    基本类型 默认值
    boolean false
    char '\uoooo'(null)
    byte (byte) 0
    short (short ) 0
    int 0
    long 0L
    float 0.0f
    double 0.0d
    • BigInteger跟BigDecimal 可以支持任何精度的计算,用空间换取准确率。
    • 创建一个数组对象的时候,实际上是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定的值, 该值拥有一个自己的关键字null。编译器看到null,就知道这个引用没用指向任何对象。
      当程序试图使用一个null的引用的时候,运行时会自动报错,以免反生更大的问题。在C/C++中,可以访问到数组外的内存空间,引发更大的问题。
      关于null, String a = '';跟String a = null;是不同的,引用一个null的对象会报错。
    • 作用域由花括号{}的位置决定,在作用域定义的变量只可用于作用域结束之前
    {
        int x = 12;
        {
            int q = 96;
        }
        //q is "out of scope"
    }
    

    以下代码在java中是不合法的,在C/C++是合法的

    {
        int x = 10;
        {
            int x = 100;
        }
    }
    
    • 在JAVA中,不需要销毁对象。JAVA对象的不具备和基本类型一样的生命周期。当用new创建一个JAVA对象的时候,它可以存活与作用域之外。
    {
        String s = new String("a String ");
    }
    

    引用s的作用域终点已经消失了,但是s指向的String对象依然继续占据内存空间。(很多人觉得这个JAVA的好处,写程序不用花时间关注对象的销毁问题,但是我觉得这样对计算机的性能的发挥不能达到极致,幸好JAVA只是用来搞WEB比较多,游戏方面的确C++更强。)
    因为对象占用的内存空间不用马上被销毁,JAVA有个垃圾回收器监视所有用new创建的对象,自动把那些不会再被应用的对象销毁。

    • static关键字可用在数据,方法,对象。当声明一个事物是static时候,就意味着,这个域或方法不会与包含它的类 的任何对象关联在一起。
    static int i = 0;
    
    static int f = {}
    
    static class c = {}
    

    关于static后面再详细认真分析了,第二章就到这吧。

    相关文章

      网友评论

          本文标题:自学JAVA的深入学习之路---0

          本文链接:https://www.haomeiwen.com/subject/yafhzttx.html