Java基本数据类型

来源:互联网 发布:杭州淘宝拍摄基地tnt 编辑:程序博客网 时间:2024/06/17 16:56

一、Java语言标示符命名规则

     1、由字母、下划线_、美元符号$、或数字组成

     2、首字母必须以 字母 、下划线_  、美元符号$ 开始

     3、java标示符大小写敏感,标示符长度无限制

     4、标示符需有一定的意义,做到“见名识意”,且不可和java中的关键字同名。

           包名不可以以 java开头即第一个包包名不可以是java,否则会抛出java.lang.SecurityException异常

           java中的关键字 都是小写字母,其中goto与const虽然从未使用过,但是也作为java中的关键字处理

 

一下给出java中的关键字列表

abstract

const

finally

int

public

this

null

boolean

continue

float

interface

return

throw

break

default

for

long

short

throws

byte

do

goto

native

static

transient

case

double

if

new

strictfp

try

catch

else

implements

package

super

void

char

extends

import

private

switch

volatile

class

final

instanceof

protected

synchronized

while

二、Java语言8种基本数据类型

byte

1字节  byte(0)

int

4字节     0

boolean

1字节  false

float

4字节     0.0f

char

2字节  ‘\u0000’(null)

long

8字节     0L

short

2字节  (short)0

double

8字节     0.0d

整数常量默认为 int 123实数常量默认为 double 3.14

int a = 888;                                     √ 
long i = 8888888888888888;    ×  
因为整数默认为int,此整数超过int的存储范围

long j = 8888888888888888L;  √

double m = 3.14;                          √
float x = 8.88;        ×  
因为实数默认为double,但是double数的分配的存储空间比float数分配的存储空间大
float y = 8.88f;       √

 

 不同数据类型混合运算时转换规则:

1.boolean类型不可以转换为其他的数据类型,boolean只能够赋予它true或是false,并测试它的真假,而不能够将boolean值进行相加或是其他任何运算,包括<

2、容量小的数据类型自动转换为容量大的类型bytecharshort -> int -> long -> float -> double,因此参与运算的数据类型决定了运算结果的最后的数据类型;容量大的数据类型要转换为容量小的数据类型必须进行强制类型转换,但是有可能会造成数据溢出。多种数据类型混合运算时,系统首先就所有的数据转换为其中容量最大的数据类型,再进行计算

3bytecharshort三种数据类型不会做自动转换,它们之间进行计算时首先都转换为int,如此bytecharshort任何一个做数学运算结果都将是int类型。但是可以将int变量直接赋值给bytecharshort,只要不超出它们可表示的范围。参与运算时如果结果不存于int类型变量则需要强制类型转换!

4、除boolean类型外,任何一种数据类型通过转换都可以转变为其它的数据类型,只是有可能会造成结果的溢出

请看如下demo: InternalTypeTest.java

package javabase.internaltype;    public class InternalTypeTest {      /**      * Java基础类型测试      */      public static void main(String[] args) {          int n = 888;                  //对          //long i = 8888888888888888;    //错,默认为int,8888888888888888超出int范围           long j = 8888888888888888L;   //对           double m = 3.14;              //对         //float x = 8.88;               //错,默认为double,float放不下           float y = 8.88f;              //对                     int a = 123;          int b = 456;          double c = (a+b)*3.14; //对,3.14为double所以首先将a,b都转换为double,再计算         //float f = (a+b)*3.14; //错,3.14为double所以计算结果为double,float装不下,需强制转换(float)                     byte b1 = 1;          byte b2 = 2;        //byte b3 = b1 + b2;  //错,byte、char、short会将变量先转换为int再做计算,结果为int,需要强制转换(byte)       }  }  


类型转换中的截尾和舍入:

不包括boolean类型
基本数据类型转换时,如果将存储空间小的类型转换为存储空间较大的类型(扩展转换)则不会有任何问题

但是如果将存储空间大的类型转换为存储空间小的类型(窄化转换),如果数据过大则会造成数据信息丢失

此时就有了截尾和舍入的处理:

demo: CastTest.java

package javabase.flowcontrol;public class CastTest {/** * 将有小数位的float、double类型的数据转换为int类型 */public static void main(String[] args) {float fabove = 0.9f, fbelow = 0.1f;double dabove = 0.9, bbelow = 0.1;//JVM默认的强制转换System.out.println("cast to int(fabove):"+(int)fabove); //0:没了0.9System.out.println("cast to int(fbelow):"+(int)fbelow); //0:没了0.1System.out.println("cast to int(dabove):"+(int)dabove); //0:没了0.9System.out.println("cast to int(bbelow):"+(int)bbelow); //0:没了0.1//使用java.lang.Math.round()方法转换://四舍五入小数位返回最接近参数的float->int或double->longSystem.out.println("cast to int(fabove):"+Math.round(fabove)); //1System.out.println("cast to int(fbelow):"+Math.round(fbelow)); //0System.out.println("cast to int(dabove):"+Math.round(dabove)); //1System.out.println("cast to int(bbelow):"+Math.round(bbelow)); //0}}

由上代码片段总结:将floatdouble类型转换为int类型时,不管小数位是否>0.5,全部截尾

    如果要对小数位进行四舍五入则可借助java.lang.Math.round()处理



原创粉丝点击