• 不知道取啥标题=-=


     

    今天的学习内容,老师就给我们上了一份大餐,计算机的 进制 ,当然我们学习肯定不会像百度百科那样的一点点的详细的去了解。毕竟我们学习的是java语言,所以根据java的内容来学二进制的。(内容与标题不太相同见谅啊QAQ,我也不知道该取啥标题

    基本数据类型:

    数据类型关键字内存占用取值范围
    字节型 byte 1个字节 -128 至 127
    短整型 short 2个字节 -32768 至 32767
    整型 int(默认) 4个字节 -2^31^ 至 2^31^-1
    长整型 long 8个字节 -2^63^ 至 2^63^-1 19位数字
    单精度浮点数 float 4个字节 1.4013E-45 至 3.4028E+38
    双精度浮点数 double(默认) 8个字节 4.9E-324 至 1.7977E+308
    字符型 char 2个字节 0 至 2^16^-1
    布尔类型 boolean 1个字节 true,false

    Java中的默认类型:整数类型是int 、浮点类型是double

    e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。

    变量在定义(使用代码展示):

    public static void main(String[] args) {
    
            byte b = (byte) 128;
            System.out.println(b);
            
            char char1 = 'a';
            System.out.println(char1);
            
            short short1 = 21292;
            System.out.println(short1);
            
            float float1 = 212212.3123213f;
            System.out.println(float1);
            
            long long1 = 1213312l;
            System.out.println(long1);
            
            double double1 = 121.3112;
            System.out.println(double1);
            
            boolean boo = true;
            System.out.println(boo);
            
            int int1 = 1;
            System.out.println(int1);
            
            int int2 = 1, int3 = 2;
            System.out.println(int2 + "" + int3);
            
            int i, j;
            i = 2;
            j = 3;
            System.out.println(i + "" + j);
    
        }

    声明变量的注意点:

     数据类型之间的转换:

    类型转换,分为自动转换,强制转换。

    自动转换: 根据数据类型的范围来觉定:byte-->short,char-->int-->long-->float-->double-->String

    就如byte可以自动转换为int类型,反之int类型不能自动转换为byte类型。

    强制转换:

    public static void main(String[] args) {
            /*
             * 强制转换 案例
             * 
             */
            int a = 1;
            char b = (char) a;  /*
                                 * ==>这里因为a的范围比b的范围要大, 所以编译器不确定变量啊的大小,
                                 * 为了避免a的值超过char 范围所以需要进行强转
                                 */
            double d = 213.21312;
            float f = (float) d; /* 同样这里的原理也是一样的 */
    
            double d1 = 21231.121;
            int i = (int) d1; /* 当然也适用于浮点型转化为整型 */
            
            /* 
             * 不过需要注意的是当自动转换时,变量不会因为 转换而丢失精度,
             * 例如:int a =2 转换为 double d = a时。d的值会为2.0。
             * 强转时,变量会因为强转而丢失精度
             * 例如:double d = 3.121322,转换为int a = (int)d; a的值为3,就等于丢失了小数部分
             * */
        }

    插入一个小知识点:Ascll编码 ,下面有一个例子:

        public static void main(String[] args) {
            /* Ascll编码表案例 */
            char a = 'a';
            int i = 1; 
            System.out.println(a + i);   //输出98
            
            /* 我们知道  char类型能自动转换为int类型从输出值为98可以反过来算出 变量a为97,
             *为什么为97,因为在Ascll表中a的Ascll值为97。
             * */
            
        }

    关于类型的强转,下面还有一个细节的知识点:

    下面的程序有问题吗?

    public static void main(String[] args){
     short s = 1;
     s+=1;
     System.out.println(s);
    }

    分析: s += 1 逻辑上看作是s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围大的类型赋值到取值范围小的类型。但是,s=s+1进行两次运算+= 是一个运算符,只运算一次,并带有强制转换的特点,也就是说s += 1 就是s = (short)(s + 1),因此程序没有问题编译通过,运行结果是2。

    因此,这里要说一点的是,赋值运算符默认进行了强制类型转换。

    /*   ========================================================================   */

    其实还学了运算符,但对于我的用处不怎么大所以就不撰写了。无非是一些加减乘除,我就直接扣两张图放着。

    运算符:

    算数运算符:

    算数运算符作用例子(a=11,b=2)
    + 加法运算,字符串连接运算 13=a+b;
    - 减法运算 9=a-b;
    * 乘法运算 22=a*b;
    / 除法运算,取整除结果 5=a/b;
    % 取模运算,两个数字相除取余数 1=a%b;
    ++ 自增: 操作数的值增加1 a++或++a,a的值都为13
    -- 自减: 操作数的值减少1 a--或--a,a的值都为10

    赋值运算符:

    符号作用说明
    = 赋值 a=10,将10赋值给变量a
    += 加后赋值 a+=b,将a+b的值给a
    -= 减后赋值 a-=b,将a-b的值给a
    *= 乘后赋值 a*=b,将a×b的值给a
    /= 除后赋值 a/=b,将a÷b的商给a
    %= 取余后赋值 a%=b,将a÷b的余数给a

    关系运算符:

    符号说明
    == a==b,判断a和b的值是否相等,成立为true,不成立为false
    > a>b,判断a是否大于b,成立为true,不成立为false
    >= a>=b,判断a是否大于或者等于b,成立为true,不成立为false
    < a<b,判断a是否小于b,成立为true,不成立为false
    <= a<=b,判断a是否小于或者等于b,成立为true,不成立为false
    != a!=b,判断a和b的值是否不相等,成立为true,不成立为false

    逻辑运算符:

    符号作用说明
    & 逻辑与 a&b,a和b都是true,结果为true,否则为false
    | 逻辑或 a|b,a和b都是false,结果为false,否则为true
    ^ 逻辑异或 a^b,a和b结果不同为true,相同为false
    逻辑非 !a,结果和a的结果正好相反
    && 短路与 1. 两边都是true,结果是true 2. 一边是false,结果是false 短路与特点:符号左边是false,右边不再运算
    || 短路或 1. 两边都是false,结果是false 2. 一边是true,结果是true 短路或特点: 符号左边是true,右边不再运算
    取反 1. ! true 结果是false 2. ! false结果是true

    三元运算符:

                数据类型 变量名 = 布尔类型表达式?结果1:结果2

               格式:int a = 3>4? 12312 :123213;

    位运算符:

    有个帖子写的还不错:https://cloud.tencent.com/developer/article/1528990

    二进制: 由 0和1组成,逢二进一    例如   1的二进制为 0000 0001 ;  2的二进制为 0000 0010;

    2进制转换为10进制:  十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。

    列如 :6转换为2进制, 6除以2 =3 余0  接着 3除以2 = 1 余 1 即为 110   所以6的二进制为 0000 0110;

    二进制转十进制采用按权相加法:https://blog.csdn.net/yuanxiang01/article/details/82503568

    位运算:位运算符指的是两个数之间的位运算,运算过程中都转换为字节类型参与运算。比如:数字3转换为字节数为0000 0011。

    符号作用说明
    & 按位与 两数同位对比,有0则为0
    | 按位或 两数同位对比,有1则为1
    ^ 按位异或 两数同位对比,不同为1,相同为0
    ~ 按位取反 针对一个数,操作数的每一位都取反
    << 按位左移 针对一个数,操作数的每位向左移动指定位数,最高位丢弃,尾部空位补0(相当于乘以2的n次方)
    >> 按位右移 针对一个数,操作数的每位向右移动指定位数,头部空位补符号位数,移除部分丢弃
    >>> 无符号右移 针对一个数,操作数的每位向右移动指定位数,无论符号数头部都补0,移除部分丢弃

    如下有代码案列:

        public static void main(String[] args) {
            /*
             * 位运算符案列
             */
    
            System.out.println(2 & 3);
            /*                           按位与
             * 2的二进制数为 0000 0010 ;2的二进制为0000 0011 两数同位对比有0则0,
             * 所以值为 0000 0010; 所以输出的值为2。
             */
            System.out.println(2 | 3);
            /*                           按位或和与恰巧反过来
             * 2的二进制数为 0000 0010 ;2的二进制为0000 0011 两数同位对比有1则1,
             * 所以值为 0000 0011; 所以输出的值为3。
             */
            System.out.println(2^3);
            /*                           按位异或
             * 2的二进制数为 0000 0010 ;2的二进制为0000 0011 两数同位对比不同为1,相同为0,
             * 所以值为 0000 0001; 所以输出的值为1。
             */
           System.out.println(~2);
              /*                           按位取反
             * 2的二进制数为 0000 0010 ; 操作数的每一位都进行取反,
             * 所以值为 1111 1101; 所以输出的值为-3。
             */
           System.out.println(2<<3);
             /*                           按位左移
             * 2的二进制数为 0000 0010   相当于把2的二进制每位左移3位,尾部用0补齐
             * 所以值为 0001 0000; 所以输出的值为16。
             */
           System.out.println(-16>>3);
            /*                           按位右移
             * 2的二进制数为0001 0000   相当于把2的二进制每位右移3位,头部用0补齐移出部分丢弃
             * 所以值为 0000 0010; 所以输出的值为2。
             */
           System.out.println(15>>>2);
           /*                           无符号右移
             * 无符号右移运算符和右移运算符的主要区别在于负数的计算,因为无符号右移是高位补0,移多少位补多少个0。
             * 15的二进制位是0000 1111 , 右移2位0000 0011,结果为3。
             */
           
        }

     同样正在学习的你下面的题怎么回答:

    1. 简答题:简述Java数据类型有哪些

    2. 简答题:简述Java变量定义及初始化赋值时要注意的问题。

    3. 简答题:简述下面的程序是否有问题,指出问题位置并说明。

    1 public static void main(String[] args){

    2    byte b1=134;

    3    byte b2=21;

    4 byte b3=1 + 2;

    5    byte b4=b1 + b2;

    6    System.out.println(b3);

    7    System.out.println(b4);

    8 }

    4. 编程题:下列程序执行结果为?

    public static void main(String[] args){

      int x=10;

      double y=20.2;

      long z=10;

      String str=""+x+y*z;

      System.out.println("str= " + str);

       }

    5. 简答题:下面程序执行结果为。

    public static void main(String[] args){

    int i=1;

    int j=i++;

    int k=i + ++i * j--;

    System.out.println(i=+i +“,j=+j + ,k=+k);

       }

    6. 简述题:简述&与&&的区别。

    7. 编程题:使用最有效的方式计算3<< 4的结果。

    8. 编程题:两个变量 int a = 1; int b = 2;如何将两个变量的值互换。

     

    个人学习,内容简略

  • 相关阅读:
    02:找第一个只出现一次的字符
    11-Canvas
    07-jQuery
    06-JavaScript高级
    05-Web API
    03-京东项目
    剑与远征-兑换码
    04-JavaScript基础语法
    02-CSS
    01-HTML
  • 原文地址:https://www.cnblogs.com/2979100039-qq-con/p/13347641.html
Copyright © 2020-2023  润新知