JavaSE -- 一、Java语言基础

大家好,我是平凡郭先生。

因为刚刚从学校出来不久,很多知识点还是有缺漏,所以打算从头开始梳理一遍,今天咱们就一起看看JAVA的语言基础

一、变量

        1.什么是变量
                在某个范围内,它的值可以改变
        2.定义的格式
                数据类型     变量名    =    变量值;
        3.变量的分类
                局部变量&成员变量(全局变量)
                相同点:
                    1.都遵循定义格式的规范来定义变量
                    2.都有作用的范围
                不同点:
                    1. 位置不同
                        成员变量位置在类内方法外
                        局部变量的位置在方法内,方法的形参,代码块
                    2.修饰符不同
                    3.初始化值不同
                        成员变量:如果在声明是不显示赋值,那么不同数据类型有不同的默认初始化值,
                                        byte , short, int , long = 0;
                                        float , double  = 0.0;
                                        char = 空格;
                                        boolean= flase;
                                        引用数据类型 = null;

                           局部变量没有初始化值;
                      4.内存位置不同
                            成员变量存在于堆空间中,局部变量存在于栈空间中
                                      
二、数据类型
        1.Java中数据类型的分类
                Java中数据类型就分两种,一种是" 基本数据类型"另一种是" 引用 数据类型"(这篇文章先不说,等写到封装在写)
        2.基本数据类型(4类8种)
                    整数型
                        byte        占一个字节       取值范围:-128到127     (-2的7次方到2的7次方-1)
                        short       占两个字节       取值范围: -32768~32767     (-2的15次方到2的15次方-1)
                        int         占四个字节    取值范围: -2147483648~2147483647     (-2的31次方到2的31次方-1)
                        long        占八个字节       取值范围: (-2的63次方到2的63次方-1)
                    浮点型
                        float        占四个字节        取值范围:-3.403E38~3.403E38        单精度
                        double    占八个字节       取值范围:-1.798E308~1.798E308        双精度
                    字符型
                        char        占两个字节        取值范围:0~65535
                    布尔型
                        boolean    他就有两个值,true(真)和false(假)
           3.基本数据类型的赋值(赋值时注意取值范围)
                    整数型
                            byte b = 10;
                            short s = 20;
                            int i = 30;
                            long l = 123456789L; //如果long类型后面加L进行标识最好加大L,因为小l太像一了
                    浮点型
                            float f = 12.3F;
                            double d = 12.3;//小数默认的数据类型是double,double类型后面也可以用D或d标识,但是一般不加
                    字符型
                            cahr c = 'a';    //char类型赋值的时候必须要用英文单引号
                    布尔型
                            boolean b1 = true;
                            boolean b2 = false;
              4.自动类型转换(隐式转换)和强制类型转换(也叫显示转换)
                        数据类型转换之 自动类型转换
                        int x = 3;
        byte b = 4;
        x = x + b;
        System.out.println(x);

        数据类型转换之 强制类型转换
        int x = 3;
        byte b = 4;
        b = (byte)(x + b);
                        System.out.println(x);
               因为在用到这块知识的时候Eclipse自动会提醒,所以我自己也就没太注意啦;下面这段话是我 百度查的
                因为java是 强类型语言 由强类型向弱类型转换需要强制转换,而由弱类型向强类型转换则系统自动转换。比如:double 类型相比int类型是属于强类型,则由double类型的数据向int类型数据转换就需要强制转换,反之则自动转换。另外八大基本数据类型的强弱关系如下:byte
                在强转这一块有一经常出现的面试题:
                //面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
                1.
        byte b1 = 3;
        byte b2 = 4;
        byte b3 = b1 + b2;
                   答案: 这段代码在编译的时候就会报出"可能损失精度"的错误,这个问题可以从两个方面解释
                    1,byte与byte(或short,char)进行运算的时候会提升为int,两个int类型相加的结果也是int类型
    2,b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围
                2.
                        byte b = 4+3;
               答案:  这段代码不会报错,因为在编译的时候已经把"4+3"的结果算出来了,并且与byte的取值范围进行了比较,这个动作也就是"Java编译器的常量优化机制"

三、运算符
            1.算数运算符
              +  号 :   在java中有三种作用,代表正号,做加法运算,字符串的连接符
               /  号 :    这个符号就相当于数学中的÷号,其结果是整数,也就是两个数的商 比如: 7/3 = 2
              % 号 :    获取的是除法操作的余数,比如:7%3 = 1
              ++(自加)号和--(自减)号 : 
                         a:单独使用:
            放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
                 b:参与运算使用:
            放在操作数的前面,先自增或者自减,然后再参与运算。
            放在操作数的后面,先参与运算,再自增或者自减。
                        c:
                            当++在变量后面的时候,会先将变量中的值取出做赋值操作,然后再自身加1(--同理)
    当++在变量前面的时候,会先自身加1,然后在将结果赋值(--同理)  
            2.赋值运算符  
                += 、-=
                这个我也不知道怎么那文字解释,就用一段代码吧
                    int a = 3;
                    a += 4;
                上面这段代码执行结果和a = a + 4的执行结果一样,都是等于7,其实a += 4;可以与a = a+4;划等号
                
              面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
1.
                short s=1;
                 s = s+1;  
                System.out.println(s);
                答案:当short与int进行运算的时候,会提升为int类型,两个int类型相加的结果也是int类型,会报"可能损失精度"的错误
short s=1;
                s+=1; //s = (short)(s + 1);
                System.out.println(s);
                答案:这个没有问题,因为s += 1 ;相当于s = (short)(s + 1);
          3.关系运算符(返回值为boolean类型)
            ==(等于),!=(不等于),>(大于),>=(大于等于),<(小于),<= (小于等于)
             三目运算:
                    a>b?a:b

                上面的代码可以看成两段,从?号将代码分开,也可以将?号看成"如果"的意思。如果a > b 的结果为true,则取 : 号前的值;如果a > b的结果为false,则取 : 号后的值




你可能感兴趣的:(JavaSE,JavaSE,变量,数据类型,运算符)