Java基础学习(一)

  • java程序运行关系

java文件经过java编译器(javac.exe)编译成java字节码程序(.class文件),由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm),字节码文件(.class)就会在java虚拟机中执行

  • java基本数据类型(一个字节8个bit)

byte(一个字节):

默认值:0

short(二个字节):

默认值:0

int(4个字节):

默认值:0

long(8个字节):

默认值:0L

    单精度(float):

默认值:0.0f

单精度数的输出只能保证6到7位的有效数字,其余各位不准确,但是在内存中存放的是准确的。

双精度(double):

默认值:0.0d

float和double的精度是由尾数的位数来决定的。

char:

char类型是一个单一的16位unicode字符

最小值:\u0000(即为0);

最大值:\uffff(即为65535)

char数据类型可以储存任何字符

浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

注意:对于数据类型的基本类型的取值范围,我们不需要强行去记住,因为它们的值都已经以常量的形式定义在对应的包装类中了Byte.SIZE(二进制位数)、Byte.MIN_VALUE......


  • 基本类型和引用类型的差别

Java把内存分为两种:一种是栈内存,另一种是堆内存

在函数的定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,而实际的对象是在存储堆内存中。

如:int i =1 ;直接在栈内存中分配空间

Integer i = 1;对象值1是在堆内存中的,而i(引用变量)是在栈内存中

在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理

因为在堆中分配内存空间的时间远大于在栈中分配存储空间,所以c的运行速度比Java快多了

如Java中的容器类,ArrayList,HashMap等,像int,double这种基本数据类型是放不进去的,因为容器类装object的,Java为每种基本数据类型都提供了对应的封装类

基本数据类型的缺省值与它们的类型有惯,但是都有值,而引用类型的缺省值为null.

int 是基本类型,(int)(Math.Random()*100)就是一个数,可以进行加见乘除。 Integer是class ,那么 new Integer(temp)就是一个对象了,可以用到Integer这个class的方法,例如用intvalue()可以返回这个int的值

  • Java常量

定义常量:final double PI_NUM = 3.14171;

byte、short、int、long都可以用10进制,8进制,16进制来表示,前缀0表示8进制,0x表示16进制

  • 自动类型转换
数据类型转换满足条件:
1.0 不能对boolean类型进行转换
2.0 不能把对象类型转换成不相关的对象
3.0 在把容量大的类型转换成容量小的类型时,必须进行强制类型转换
4.0 转换过程中可能导致溢出或损失精度

  • 隐含类型转换
Java中整数的默认类型是Java,浮点型的默认类型是float,所以
long l = 9223372036854775807L 后面加上L,否则要报错,需强制转换类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值