首页 > 编程语言 >java_day2_常量,变量,数据类型,运算符

java_day2_常量,变量,数据类型,运算符

时间:2024-09-18 14:48:44浏览次数:11  
标签:10 java 进制 00000000 补码 数据类型 运算符 println out

一、常量

常量:在Java程序运行过程中其值不能发生改变的量
分类:
    1、字面值常量:            
            整数常量 表示所有的整数,包括负数  10  -8
            小数常量 表示所有的小数 1.23  -3.14
            布尔常量 true  false
            空常量 null
            字符常量 表示由单引号括起来的单个字符 'a' '刘'
    2、自定义常量
常见的单位转换:
    1byte = 8bit
    1kb = 1024byte
    1mb = 1024kb
    1gb = 1024mb
    1tb = 1024gb
    1pb = 1024tb
java针对整数常量,提供4种表现形式:
    二进制:由0,1构成,逢2进1,由0b开头
    八进制:由0,1,2,3,4,5,6,7构成,逢8进1,由0开头
    十进制:由0,1,2,3,4,5,6,7,8,9构成,逢10进1,默认就是10进制
    十六进制:由0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f构成,逢16进1,由0x开头
进制之间的转换
    1、其他进制转10进制 规律:每一位上的系数乘上自身进制的幂次方之和
        12345【10进制】 -> 【10进制】?12345
        12345 = 10000 + 2000 + 300 +40 + 5
              = 1*10^4 + 2*10^3 + 3*10^2 + 4*10^1 + 5*10^0
              = 10000 + 2000 + 300 + 40 + 5
              = 12345
    2、10进制转其它进制 规律:除基取余,直到商为0,余数反转
    3、10进制与2进制之间的快速转换:8421码

       1    1   1   1   1   1   1   1
      128  64   32  16  8   4   2   1
    
      10110011 -> 128 + 32 + 16 + 2 + 1
    4、其他进制到其他进制 如:2进制到8进制
        方案1、先转10进制,再转8进制
            10011-> 16 + 2 + 1 = 19
            19/8= 2...3
            2/8 = 0...2
        方案2:先转2进制,若转8进制,每3位一组合,转10进制拼接;若转16进制,每4位一组合,转10进制拼接
            举例:10011【2进制】 -> 【8进制】023
                    010-> 2   011-> 3
                 10011【2进制】 -> 【16进制】0x13
                    0001-> 1   0011-> 3
    举例:-7 + 3 = -4
    java针对2进制而言,负数和正数的表现形式不一样的,并且在计算机底层计算过程中,数据都是采用补码进行计算的
    要想知道一个数值的补码,就必须先知道该数值的反码,要想知道一个数值的反码,就必须先知道该数值的原码。
        原码:
            正数的原码与二进制值保持一致,最高位为0;
            负数的原码数值位与正数一致,最高位是1。
            举例:
                           符号位   数值位
                    -7的原码:1     0000111
                    3的原码: 0     0000011
        反码:
            正数的反码与原码保持一致;
            负数的反码,再原码的基础上,符号位不变,数值位按位取反
            举例:
                           符号位   数值位
                    -7的反码:1     1111000
                    3的反码: 0     0000011
        补码:
            正数的补码与原码保持一致;
            负数的补码,再反码的基础之上,末位+1
            举例:
                           符号位   数值位
                    -7的补码:1     1111001
                    3的补码: 0     0000011

                11111001
            +
                00000011
              --------------
        补码:   11111100
        最终计算机是最终原码转10进制之后的结果
                符号位    数值位
        补码:    1      1111100
        反码:    1      1111011
        原码:    1      0000100
        -------------------------
                 -4

二、变量、数据类型

Java是一门强类型语言。
变量:指的是在java程序运行过程中,其值可以发生改变的量
定义一个变量的语句
    数据类型 变量名 = 初始化值;

数据类型:
    基本数据类型:
        整数类型:    所占字节数    可表示范围
            byte         1             -2^7 ~ 2^-1
            short        2             -2^15 ~ 2^15-1
            int          4             -2^31 ~ 2^31-1
            long         8             -2^63 ~ 2 ^63-1
        小数类型:
            float        4
            double       8
        布尔类型:
            boolean      1
        字符类型:        根据具体的编码来定,不同的编码下,java中一个字符所占的字节数是不同的
        引用数据类型:

使用变量的注意事项:
    1、变量要进行初始化赋值,才可以使用
    2、在同一作用域下,变量名不能重复,可以大小写不一样,严格区分大小写
    3、Java中整数默认是int类型,要想定义一个long类型的变量,需要在值的末尾加上l或L
    4、Java中小数默认是double类型,要想定义一个float类型的变量,要在值的末尾加上f或F



`
public class DataTypeDemo1 {
    public static void main(String[] args) {
        //数据类型 变量名 = 初始化值;
        //定义一个byte类型的变量
        byte b1 = 100;
//        b1 = 120;
//        byte b1;
//        byte B1 = 110;
        System.out.println(b1); // 直接打印这个变量,实际上打印的是该变量存储的值

        //定义一个short类型的变量
        short s1 = 200;
        System.out.println(s1);

        //定义一个int类型的变量
        int i1 = 300;
        System.out.println(i1);
//        int i2 = 30000000000;
        long i2 = 30000000000L;
        System.out.println(i2);

        //定义一个float类型的变量
        float f1 = 12.34F;
        System.out.println(f1);
        //定义一个double类型的变量
        double d1 = 33.45;
        System.out.println(d1);

        //定义一个布尔类型的变量
        boolean b2 = true;
        System.out.println(b2);

        //创建一个字符变量
        char c1 = 'a';
        System.out.println(c1);
    }
}
`
数据类型转换:
    在Java中,变量参与运算时,会先自动提升数据类型
        自动数据类型转换:
            byte,short,char -> int -> long -> float -> double
        强制数据类型转换:
            目标数据类型 变量名 = (目标数据类型)(要转型的值或表达式)
            注:会损失精度


public class DataTypeDemo2 {
    public static void main(String[] args) {
        //哪句是编译失败的呢?为什么呢?
//        byte b1=3,b2=4,b; //不推荐这么定义
        //工作的时候,推荐一个变量定义占用一行
        byte b1=3;
        byte b2=4;
        byte b;
//        b=b1+b2; // 如果是变量参与运算,会先自动类型转换,做完运算后,再判断是否可以进行赋值
        //强制类型转换
        b=(byte)(b1+b2);
        System.out.println(b);
//        b=3+4; // 如果是常量参与运算,会先进行运算,运算后,会判断结果是否在范围内,如果在直接赋值


    }
}



计算机中的数据都是采用补码进行运算的
130的补码:00000000 00000000 00000000 10000010

做强制类型转换:
补码:  (00000000 00000000 00000000) 10000010
补码:   10000010
已知补码求原码:
        符号位      数值位
补码:    1        0000010
反码:    1        0000001
原码:    1        1111110
-----------------------------
       64 + 32 + 16 + 8 + 4 + 2 = 126
       因为符号位是1,所以最终的结果是-126


注意:
    1、+ 号两边若都没有字符串,这个就是最普通的算数加法运算
    2、若有字符参与算数运算的话,java虚拟机会将该字符所对应的ASCII码表中的数值进行转换
        记住三个特殊的字符对应的ASCII码值:
            '0' - 48
            'A' - 65
            'a' - 97
    3、同级别优先级的符号,从左向右进行运算
    4、+ 号两边若任意一边是字符串,而是做字符串的左右拼接操作,拼接结束后是一个新的字符串



public class DataTypeDemo4 {
    public static void main(String[] args) {
        //代码格式化的快捷键:ctrl + alt + L
//        System.out.println('a'); // a
//        System.out.println('a' + 1); // 98

        System.out.println("hello" + 'a' + 1); // helloa1
        System.out.println('a' + 1 + "hello"); // 98hello
        System.out.println("5+5=" + 5 + 5); // 5+5=55
        System.out.println(5 + 5 + "=5+5"); // 10=5+5

        System.out.println("5+5=" + (5+5)); // 5+5=10
    }
}

三、赋值

赋值运算符:
    =  += -= *= /= %=

public class FuZhiDemo1 {
    public static void main(String[] args) {
        int a = 3;

//        a += 4;
//        System.out.println(a);

        a-=5;
        System.out.println(a);

    }
}

四、算数运算符

算数运算符:
    + - * / % ++ --
    java中,一个算数表达式最终的结果数据类型,是由参与运算最大的那个参数类型决定的
++: 自加1
    ++在后,先赋值再进行自加1;++在前,先自加1,再赋值参与运算
--: 自减1
    --在后,先赋值再进行自减1;--在前,先自减1,再赋值参与运算

五、关系运算符

关系运算符:
    > < >= <= == !=
    **关系表达式的结果一定是Boolean类型的**

六、逻辑运算符

逻辑运算符:
    & | ^ ! && ||
    **参与运算的参数类型都是Boolean,结果也是一个Boolean类型 **
    & : 有false则false
    |: 有true则true
    ^ : 相同则false,相反则true
    !: 将true变false,false变true
    &&: 左边为false时,右边表达式不会执行,结果为false
    ||: 左边为true时,右边表达式不会执行,结果为true

七、三目运算符

三目运算符【三元运算符】:
语句定义格式:
    (关系表达式)?表达式1:表达式2;
     这里的表达式1和表达式2必须是要有一个结果值的。

public class SanMuDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 8;
        //需求:求两个数中的最大值
        int x = (a > b) ? a : b;
        System.out.println(x);

    }
}

八、位运算符

位运算符:针对数值二进制形式的计算
    & | ^ >> << >>>
参与运算的是数值结果也是一个数值

计算机中所有的运算都是采用补码进行的
3的补码:00000000 00000000 00000000 00000011
4的补码:00000000 00000000 00000000 00000100

&:有0则0
    00000000 00000000 00000000 00000011
  &
    00000000 00000000 00000000 00000100
   -------------------------------------
    00000000 00000000 00000000 00000000

|:有1则1
    00000000 00000000 00000000 00000011
  |
    00000000 00000000 00000000 00000100
   -------------------------------------
    00000000 00000000 00000000 00000111

^:相同则0,不同则1
    00000000 00000000 00000000 00000011
  ^
    00000000 00000000 00000000 00000100
   -------------------------------------
    00000000 00000000 00000000 00000111

~: 0变成1,1变成0
    00000000 00000000 00000000 00000011
  ~
    -------------------------------------
补码  11111111 11111111 11111111 11111100
反码  11111111 11111111 11111111 11111011
原码  10000000 00000000 00000000 00000100
-----------------------------------------
-4



 >>:右移,整体补码向右移动若干位,右边多出的部分丢弃,若最高位是1,左边就用1补齐;反之用0补齐
 <<:左移,整体补码向左移动若干位,左边多出的部分丢弃,右边用0补齐
 >>>:无符号右移,整体补码向右移动若干位,右边多出的部分丢弃,左边无论最高位是0还是1,都用0补齐

24的补码:00000000 00000000 00000000 00011000

        00000000 00000000 00000000 00011000
  >>2:  00000000 00000000 00000000 00000110(00)
  ------------------------------------------------

2的补码:00000000 00000000 00000000 00000010

            00000000 00000000 00000000 00000010
 <<4: (0000)00000000 00000000 00000000 00100000


-24
原码:10000000 00000000 00000000 00011000
反码:11111111 11111111 11111111 11100111
补码:11111111 11111111 11111111 11101000
------------------------------------------
     11111111 11111111 11111111 11101000
>>>2: 0011111111 11111111 11111111 111010(00)

标签:10,java,进制,00000000,补码,数据类型,运算符,println,out
From: https://www.cnblogs.com/w-ll/p/18414066

相关文章

  • java计算机毕业设计就业信息服务网站(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及与就业市场的日益复杂化,毕业生面临的就业挑战愈发严峻。信息不对称成为制约高效就业的一大瓶颈,求职者难以迅速获取全面、准确的招......
  • java计算机毕业设计课后辅导(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,教育领域正经历着前所未有的变革。传统的教学模式已难以满足个性化学习、高效管理的需求。随着互联网技术的普及,在线教育平台......
  • java计算机毕业设计快递信息管理(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,快递行业作为连接生产与消费的重要桥梁,其运作效率与服务质量直接关系到消费者的满意度及市场的繁荣程度。随着电子商务的蓬勃......
  • java计算机毕业设计剧本杀交流分享平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:在数字化娱乐浪潮的推动下,剧本杀作为一种集角色扮演、逻辑推理与社交互动于一体的新兴游戏形式,近年来迅速风靡全球。它不仅为玩家提供了沉浸式的游戏......
  • Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)
    目录题目:*18.28(非递归目录大小)习题思路代码示例输出结果题目:*18.28(非递归目录大小)不使用递归改写程序清单18-7习题思路(getSize方法)创建一个变量表示总共的大小。传入路径,创建File文件。创建ArrayList<File>列表,并添加传入的文件。如果列表不为空,则进......
  • 使用Java实现高效用户行为监控系统
    引言背景介绍:随着Web应用的日益复杂和用户体验成为产品成功的关键因素,用户行为监控(UserBehaviorMonitoring,UBM)变得越来越重要。UBM不仅帮助开发者理解用户如何与应用程序交互,还能用于性能优化、错误追踪、用户体验改进等方面。目标读者:本文面向Java开发者、系统架构师以及对用......
  • 庖丁解java(一篇文章学java)
    (大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发) 一篇文章学java,这是我滴一个执念...当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢?   请看下文.关于决定开始写博文的介绍......
  • java class
    cstdioimportjava.util.Scanner;classRead{//ilikeC++getchar()foreverQwQ!!!//idon'tknowwhyjavascannerdonothavethatQAQ!!!staticScannersc;staticStringbuff;staticintbufP;Read(){sc=new......
  • 解决ZBLOG网站运行中出现"JavaScript加载失败"问题
    当Z-Blog网站运行中出现“JavaScript加载失败”的问题时,可能的原因有几个方面,包括但不限于插件冲突、HTTPS配置问题、CDN问题等。以下是针对这些问题的一些解决方案:1.插件冲突问题描述:某些插件可能与Z-Blog核心或其他插件存在冲突,导致JavaScript无法正常加载。解决......
  • java-CC1 链条审计
    java-CC1链条审计CC1是CommonsCollections1的简称,它是ApacheCommonsCollections库中的一个已知的反序列化利用链。而这个库也是java中比较通用的库。在java语言里面有执行系统命令的Runtime类像php中的eval()、system()、exec()、shell_exec()、assert()、passt......