JAVA-SE语法篇 - 1

一,数据类型与变量

1.1数据类型

java中的数据类型分为两类:基本数据类型和引用数据类型

数据类型关键字占用内存范围与C语言的区别
字节型byte1字节-2^7 ~ 2^7-1C语言无此类型
短整型short2字节-2^15 ~ 2^15-1相同
整形int4字节-2^31 ~ 2^31-1相同
长整型long8字节-2^63 ~ 2^63-1相同(注:JAVA无long long类型)
单精度浮点数float4字节不用记相同
双精度浮点数double8字节不用记相同
字符型char2字节0 ~ 2^16-1C语言的char是1个字节
布尔类型boolean未规定true / falseC语言无此类型

java中的数据类型与C语言的稍有差异,请注意区分:

1.JAVA中没有C语言的无符号类型,全部是有符号类型

2.JAVA中的布尔类型只能赋值为true/false,在C语言中所说的非零为真,零为假的逻辑在JAVA中均不能使用,下面举一个例子加深一下理解,例如:

//在C语言中下述代码是可以运行的

#include<stdio.h>
int main()
{
    if(1<2<3)
        printf("haha\n");
    return 0;
}

//因为在C语言中先计算1<2,为真就是1,为假就是0,再把得到的数与3进行比较


//而在JAVA中下述代码是不能运行的

public class Main{

    public static void main(){

        if(1<2<3){

            System.out.println("haha");
        }
    }
}
//因为在JAVA中先计算1<2,为真就是true,为假就是false,再把true/false与3进行比较
//而两者的类型不同,不能相互比较所以会报错

1.2变量

JAVA中变量的使用与C语言几乎没有差别,唯一要注意的就是有的类型的数值范围与C语言不同,注意区分,在此演示一下:

public class Main {
    public static void main(String[] args) {
        int a = 10;
        float b = 1.0f;
        //注意这里的f不能丢,否则会报错且不能运行
        //因为编译器默认 1.0 为double类型,而b是float类型
        double c = 2.0;
        char d = 'c';
        boolean e = false;
    }
}

如果没有学过C语言,可以看我之前写的博客:初始C语言

1.3类型转换

JAVA作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验

上面所说的 f 也是因为这个,再举一个例子,例如:

    public static void main(String[] args) {
        long a = 10;
        int b = 20;
        b = a;
        //报错,long的范围比int范围大,将long类型的数据赋值
        //给int类型的变量可能会发生数据丢失,不安全
        b = (int)a;//正确
        a = b;//正确
    }
}

在此有同学会问,照你这么说,那a是long类型,b是int类型,为什么b给a赋值就不会报错呢?因为在这里会发生自动类型转换(隐式即编译器实现,我们无法看到),编译器可以自动将数据范围小的转为数据范围大的。

因此我们在不同类型的变量相互赋值的时候,最好使用强制类型转换。

注意:1.在JAVA中,对字面值的直接赋值是允许的,前提是没有超过表示范围

           2.不能将布尔类型的变量转换成其他类型,也不能将其他类型的变量转换成布尔类型。

2.String类型

JAVA中使用String类定义字符串,与C语言不同,先简单学习一下用法。

public class Main {
    public static void main(String[] args) {
        String s1 = "abcd";
        String s2 = "efg";
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s1+s1);
        //JAVA中可以用+来拼接字符串
    }
}

 字符串可以与整形数字相互转换

public class Main {
    public static void main(String[] args) {
        //整形转字符串
        int a1 = 321;
        //方法1
        String s1 = a1+"";
        System.out.println(s1);
        //方法2
        String s2 = String.valueOf(a1);
        System.out.println(s2);
        //字符串转整形
        String s = "123";
        int a = Integer.parseInt(s);
        System.out.println(s);
    }
}

 

二,运算符

JAVA中的运算符与C语言中的几乎一样,只有两点需要注意:

1. 左移运算符,在JAVA中,左移运算符有两个,分别是>>和>>>

有符号>>:最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

无符号>>>: 最右侧位不要了, 最左侧补 0

2. 从所周知 && 和 || 存在短路求值的规则(即若&&的左侧为假,那么整体为假,右侧的表达式就不会进行运算,若 || 的左侧为真,那么整体为真,右侧的表达式就不会进行运算),而在JAVA中存在(条件表达式)&(条件表达式)和(条件表达式)|(条件表达式),此时的 & 和 | 不是位操作符,而是逻辑操作符,与&&和||相同,但是不会短路,即使&左侧为假,右侧的表达式也要进行运算,| 也是一样。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶祇秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值