IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Day02-常量和变量 -> 正文阅读

[Java知识库]Day02-常量和变量

1.常量以及常量的分类

常量:在程序的 执行过程中,其值不发生改变的量!

常量的分类:两大类——字面值常量和自定义常量

字面值常量:字符串常量、字符常量、整数常量、小数常量、布尔常量、空常量

字符串常量:使用双引号括起来的内容--- "hello","helloworld","我爱高圆圆,你们呢?"
            字符串+任何数据="新的字符串" ? ?        //此时的+是字符串拼接符号
            任何数据+"字符串" = "新的字符串"        //此时的+是字符串拼接符号
                System.out.println("hello,高圆圆") ;
                System.out.println("hello ? World ....") ;
                System.out.println("hello"+7) ; //"hello"+7="hello7"
                System.out.println("7");        //"7",字符串7,而非整数int 7
                System.out.println(98+"=5+5") ;//98=5+5
字符常量:使用单引号括起来的单个内容  'a','b','0','A','B'
        'ab':不行 jvm就认为是一个字符串
        当字符不参与运算的时候:本身就是描述的就是字符本身的值
        如果字符参与运算的时候,字符就会寻找对应的ASCII码表的值,进行运算!
            System.out.println('A') ;
            System.out.println('B') ;
            System.out.println('C') ;
            System.out.println('0') ;
            System.out.println('A'+1) ;//此时的+是运算符符号
            System.out.println('a'+1) ;
            System.out.println('0'+1) ;
                //'0'---ASCII码的值 :48 数字字符
                //'A'---ASCII码的值 :65 大写字母字符
                //'a'---ASCII码的值 :97 小写字母字符
整数常量:包括"进制",二进制,八进制,十进制(整数默认),十六进制
        System.out.println(100) ;
        System.out.println(9527) ;
        System.out.println(19) ;
        System.out.println(008) ;   //此时八进制,八进制是以"0"开头
小数常量:
        System.out.println(1.3415926) ;
        System.out.println(1.34-12.56) ; 
            //减法/除法:小数计算(可能无限近似某个值,计算机的伪计算!)
            //Jdk后期提供了一个类BigDecimal(小数的精确计算)
布尔常量:
        System.out.println(true) ;
        System.out.println(false) ;
空常量:null---引用数据类型的默认值就是null(特殊的引用String)
            //Java数据类型--- 基本类型/引用类型
        class Test{
            public static void main(String[] args){
                String s = null ;   //引用类型
                String s2 = "" ;    //有内容,不过是空串
                System.out.println(s) ;
                System.out.println("s2:"+s2+"---") ;    //"s2:"
            }
        }

自定义常量:(面向对象中讲解---final关键字)

2.变量以及变量的分类(重点/理解/识记)

变量:在程序的执行过程中,其值发生改变的量!

变量的三要素:
    1)数据类型
    2)变量名:按照标识符的组成规则: 遵循 "小驼峰命名法"
    3)初始化值:如果变量使用之前都没有赋值,就"报错了"
格式
            数据类型 变量名  = 初始化值 ;
                    int age = 20 ;

Java中的数据类型(重点):两大类——基本数据类型和引用数据类型

1)基本数据类型(四大类型,8种)
                整数类型:默认int类型 ?
                        byte  字节类型  (占用的字节数1个字节) ? (-128~127:范围)
                        short  短整类型 (占用的字节数 2个字节)
                        int ? 默认类型 ? (占用的字节数 4个字节)
                        long ? 长整型 ? (占用字节数 8个)
                                
                            实际开发中:整数使用最多int
                                     其次long(以后用作定义时间--记录当前系统时间毫秒值(后期学习类---日期-->毫秒值))
                                        //举例:jdk提供的 System类:里面有一个方法:获取当前系统时间毫秒值
                                         public static long currentTimeMillis()
                                         long time  = System.currentTimeMillis() ;
                                         System.out.println(time) ;
                浮点类型:默认就是double类型 ? 实际开发中使用最多的就是double了! (举例:商品的价格(商城价格/市场价格)..)
                        float ? 单精度类型 (占4个字节)
                        double  双精度类型 (占8个字节)
                        
                字符类型
                        char 占两个字节数 
                            char ch = 'A' ;
                            char ch = '我' ;
                                 ch = 'A' ;
                                 ch = '0' ;
                                 System.out.println("ch:"+ch) ;   ?//'0'
                                    
                布尔类型  不参与运算(只是提供判断不和其他数据类型转换 )  (占1个字节)
                        boolean     (true/false)
                            boolean flag = true ;       //一般情况变量 flag(标记)
                            System.out.println("flag:"+flag) ;
2)引用数据类型:类,数组,接口(后期研究的方向)
定义变量的注意事项       
            1)定义long类型必须在值的后面加上标记:L或者l 这样就表示定义的是长整型的变量  
 ? ? ? ? ? ? ? ? ?  long l = 100000000000L; //建议使用L
                    System.out.println("l的值是:"+l) ;
                    
            2)浮点类型默认double,定义单精度float类型的时候,后面的值需要加上标记:F或者f即可!
                    float f = 12.56F;
                    System.out.println("f:"+f) ;
/*
    面试题
        
        同一行定义了多个变量
        byte b, b1 = 3,b2 = 4 ;
        1)b = b1 + b2 ; ?  //变量相加
        2)b = 3+4 ;             //两个常量相加
        输出b的值 
        
        问:
            当前代码中 哪一句会编译失败,为什么,指出它的解决思路!
            
            1)编译失败
            为什么?因为byte,short,char三者之间不转换,一旦参与运算
            优先提升为int
            所以b1--先提升为int类型3
            b2---提升为int类型的4
            两个相加的结果为int类型的 7,而b的类型 byte,接收不了
            
            所以需要强转类型转换
            
    
*/
class DataTypeTest{
    
    public static void main(String[] args){
        //同一行定义了多个变量
        
        byte b, b1 = 3,b2 = 4 ; 
        //1)
        //b = b1+ b2;//不兼容的类型: 从int转换到byte可能会有损失
        
        //b = (byte)(b1+b2) ; //解决格式:强转
        //System.out.println("b:"+b) ; 
        
        //2)
        b = 3+4 ;  //常量相加,先相加,然后看其的结果是否在byte类型 取值范围内,
        //在的话,就直接赋值
        //超过范围了 (默认整数int类型---强转解决)
        System.out.println("b:"+b) ;
        
    }
}
定义的时候的注意事项:
    
        1)同一个变量,不能被定义多次(重复定义),这种情况是因为Java是一个强类型语言
        强类型语言:语法和格式是非常严谨的! (Java语言)
        若类型语言:JavaScript(前端Js)
                js定义变量 var a = 10  ;(分号可以不写,var也可以不写)
        2)实际开发中,不建议同一行上定义多个变量(不适合阅读)
                一行同时定义多个变量(面试题/笔试题中出现居多)
                
        3)方法定义中的变量:局部变量,它在使用之前必须进行初始化否则报错!
                    1)要么定义的变量的时候就初始化了
                        数据类型 变量名 = 初始化值;
                    2)要么就先去定义,然后在使用之前必须初始化
                        数据类型 变量名;  //声明变量
                        变量名 = 初始化; //然后初始化了
                        
        4)语句结束,都是以"分号结束" ;  (英文字符)
?
/*
    定义两个变量 
    int a = 4 ;
    byte b = 3 ;
    
    两个变量要进行求和----数据在进行计算的时候,应该要保证数据类型一致!
    
    Java中基本数据类型:存在概念
            默认类型提升
                    byte,short,char三者之间不转换,但是分别自己参与运算的时候
        优先提升为int(考点)---long---float---double
        
        
        boolean类型:不参与任何的运算!它只是描述 
                逻辑判断的结果(true/false)
                
    
    
*/
class DataTypeDemo3{
    
    public static void main(String[] args){
            
            //定义变量变量
            int a = 4 ; //int类型
            byte b = 3 ;//byte类型
            
            //两个数据求和
            int result = a + b ; //变量相加了
            
            //int result = a + b //先将一个字节的b---直接提升int----变成4个字节3 
            //结果数据类型:是int类型  = 四个字节的7(int类型)
            System.out.println("result:"+result) ;//result:7
        
    }
}
/*
    定义两个变量 
    int a = 4 ;
    byte b = 3 ;
    
    现在的接收的结果类型的变量是byte类型,而且a和b要进行变量相加
    
    当前我们变量相加计算的时候,如果接收的类型 范围小于计算结果的数据类型
    需要使用Java的强转类型转换-----让我们的数据进行类型匹配,防止出现(jvm提示不兼容的类型:)
            
            显示转换(强制类型转换)----
                    不仅适用于基本类型,引用数据类型(后期研究引用类型)
            格式:
                    目标数据类型 变量名 = (目标数据类型)(结果) ;
                    
        实际开发中,尽量避免强转类型转换,可能会造成数据精度损失
*/
class DataTypeDemo4{
    
    public static void main(String[] args){
        
        //定义这俩个变量
        int a = 4 ;
        byte b = 3 ;
        
        //结果类型byte
            //b提示为int类型
        //byte result = a + b ; //错误: 不兼容的类型: 从int转换到byte可能会有损失
        
        //  目标数据类型 变量名 = (目标数据类型)(结果) ;
        byte result = (byte)(a+b) ;
        System.out.println("result的结果是:"+result) ;//result的结果是:7 (byte类型)
    }
}
/*
    
    面试题(考点:byte取值范围)
            
        byte b = 129 ;
    在程序中,能编译通过吗? 
    如果不能,如何解决过,结果是多少,请阐述思路
    
    byte类型的取值范围
        -128~127
        
    
*/
class DataTypeTest2{
    
    public static void main(String[] args){
        
        //定义一个变量
        //byte b = 129 ; //错误: 不兼容的类型: 从int转换到byte可能会有损失
        
        //解决方案:强转类型转换
        //格式:目标数据类型 变量名 = (目标数据类型)(结果);
        byte b = (byte)129 ;
        System.out.println("b:"+b) ; //b:-127  程序运行出来的结果
    }
}
/*
    当前byte的值如果超出了范围 -128~127 :那么jvm的编译的时候就认为int类型了
    
    byte b = int类型的 数据;  ----需要强转类型转换
    
    
    byte b = (byte)129 ; 
    
    
    129---jvm---int类型  4个字节 ---二进制(原码)
    
    二进制(原码) 
    00000000 00000000 00000000 10000001
    
    最高符号位   数值位 ?  原码---反码---补码:相同
        0       0000000 00000000 00000000 10000001
        
        byte b = (byte)129 ; 将补码进行截取---三个字节---变成byte类型 (1个字节)
        
        (0      0000000 00000000 00000000) 10000001---
    
    10000001---截取后的补码结果-----反码----原码(需要的结果)
            
    最高符号位   数值位 ? ? ? 补码
        1           0000001
        -                 1
        -----------------------
        1           0000000 反码
        -----------------------
        1           1111111 原码
        
        -    ?
        
        =-64+32+16+8+4+2+1
        =-127
    
*/
?
/*
    面试题:
    
        
         1) 请描述下面的代码的含义:
        
         ? float  f = 12.34F ;
         ? float f2 = (float)78.56 ;
         ? double d  = 12.78 ;
         ? 
          当前变量f:本身就定义的是一个单精度类型 加了一个标记F
          f2:是通过强制类型转换而来的,可能会造成数据的精度损失
         ? 目标类型 变量名 = (目标类型)(结果) ;
         ? 
         ? d变量:本身默认的double类型
         ? 
         2)关于字符串拼接符号
            字符串+任何数据="新的字符串"
            任何数据+字符串="新的字符串" 
            
            看以下程序,写成结果!
*/
?
class DataTypeTest3{
    
    public static void main(String[] args){
            
            System.out.println("hello"+'a'+1) ; //"hello"+'a'="helloa"+1 ="helloa1"
            System.out.println('A'+1+"hello"+"world"+"JavaEE!");
                            //66+"hello"="66hello"+"world"="66helloworld"+"JavaEE!"="66helloworldJavaEE!"
            System.out.println("-----------------------------")  ;
            
            System.out.println("5+5="+5+5) ;//"5+5=5"+5="5+5=55"
            System.out.println(5+5+"=5+5") ; //10+"=5+5" = "10=5+5"
            
            
            //int a = 10 ;
            //System.out.println(a+"") ;
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:20:30  更:2021-12-24 18:22:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:56:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码