您的位置:首页 > 汽车 > 新车 > Java数据类型与变量

Java数据类型与变量

2024/11/18 17:37:30 来源:https://blog.csdn.net/m0_75235246/article/details/141890426  浏览:    关键词:Java数据类型与变量

前言:

        Java数据类型和C的有什么相同和不同之处。

        Java变量和常量有什么特殊之处。

        Java不同类型的数据+-*/之间有什么不一样的秘密。

         为什么又说Java是 Write onceRun anywhere?

Java数据类型:

        Java数据类型分为两种:

        

与C语言不同点:

1、Java中多了两个类型,一个是字节型byte,一个是布尔型。

2、Java中字符型char占2个字节,字节型占1个字节。

3、整形和浮点型都是带有符号的

4、整型默认为int型,浮点型默认为double

5、Java中无论是32位机器还是64位,这些类型的大小是不变的,同时也就可以说明Java:Write once,Run anywhere。(不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节

Java变量:

定义变量语法格式:

数据类型 变量名 = 初始值 ;
变量名和初始值的数据类型必须匹配。
例如:
 public static void main(String[] args) {int i = 7.2;float b = 8.3;System.out.println(i);System.out.println(b);}

如果这样写是不对的,原因很简单,由于浮点型7.2默认为double类型,所以类型不匹配了

但是,如果是这样:

  public static void main(String[] args) {long i = 7;float b = 3;double c = 4;System.out.println(i);System.out.println(b);System.out.println(c);}

如果左边的变量是比右边初始值的占用内存大或者相等,也是可以存的,因为存的下,只是右边的数会进行提升,提升成和左边一样的大小。

整型变量常见的错误:

        在sout之前变量必须赋值!

这样是不可以的:

这样是可以的:

当然如果想要打印int类型的最大值和最小值,可以这样:

        System.out.println(Integer.MIN_VALUE);System.out.println(Integer.MAX_VALUE);

Integer是int的封装,后面会讲解。

长整型变量常见的错误:

        一般我们为了区分长整型和整型,我们一般在初始值的后面加上L

例如:
 

    public static void main(String[] args) {int i = 10;long a = 20L;System.out.println(a);System.out.println(i);}

字符型变量:

        Java中字符型变量初始化和C语言是一样的,都是用单引号引起来,不同点是Java中字符型占2个字节,也就是字符的数量比C要多,所以Java采用的是Unicode表示字符,而C语言中采用的是ASCALL表表示字符。

        Java中可以表示字符的范围更广,甚至可以表示一个汉字。

    public static void main(String[] args) {char a = '好';System.out.println(a);}

布尔型变量:

        这个变量在C语言中没有,C语言中只有bool返回值,而且0表示假,非0表示真

但是在Java中没有这一说,Java中真就是true,假就是false。

例如:

    public static void main(String[] args) {int b = 2;int c = 3;System.out.println(b == c);System.out.println(b > c);System.out.println(b < c);System.out.println(b != c);}

当然我们也可以定义变量:

类型转换:

自动类型转换:

        自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。特点: 数据范围小的转为数 据范围大的时会自动进行

        

int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全

强制类型转换:

       强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。

例如:
 

    public static void main(String[] args) {long a = 3L;int b = 2;b = (int)a;}

注意事项:

1. 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型
2. 如果需要把范围大的类型赋值给范围小的 , 需要强制类型转换 , 但是 可能精度丢失
3. 将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查
4. 强制类型转换不一定能成功,不相干的类型不能互相转换

类型提升:

1. intlong之间:int会被提升为long

例如:
 

    public static void main(String[] args) {int a = 10;long b = 20;int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long}

2. bytebyte的运算

如果是byte和byte之间进行运算,会不会报错呢?

例如:
 

    public static void main(String[] args) {byte a = 10;byte b = 20;byte c = a + b;System.out.println(c);}

发现其实是会报错的。

结论:

        byte 和 byte 都是相同类型 , 但是出现编译报错 . 原因是 , 虽然 a b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算 , 得到的结果也是 int, 这是赋给 c, 就会出现上述错误 .
可以进行强转后再赋值给c

字符串类型:

        字符串类型在Java中比较特殊,在C语言中没有字符串类型,只有字符类型,用字符数组存字符串,但是在Java中有字符串类型!

        当然字符串不仅能打印,还能进行拼接:

        字符串+字符串就是将两个字符串进行拼接。

    public static void main(String[] args) {String s1 = "hello";String s2 = " world";System.out.println(s1);System.out.println(s2);System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接}

int转成string

        

int num = 10;
// 方法1
String str1 = num + ""; 
// 方法2
String str2 = String.valueOf(num);

string转成int

String str = "100";
int num = Integer.parseInt(str);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com