自学JAVA的深入学习之路---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)