• java数据类型与变量的安全性


    在这里插入图片描述

    作者简介: 博主在读计科双非本科,目前大二,正在学习JAVA,数据库,操作系统,计算机网络,数据结构,JAVA Web等…
    个人主页:熬夜磕代码丶
    作品专栏: java se
    我变秃了,也变强了
    给大家介绍一款程序员必备刷题平台——牛客网
    点击注册一起刷题收获大厂offer吧

    一、标识符

    在java中规定标识符中只能包含:字母,数字及下划线和$ 符号,但不能以数字开头,严格区分大小写.

    参考标准当中的规定:
    1.类名:大驼峰,每个单词首字母大写(HelloWorld)
    2.方法名:小驼峰,从第二个单词开始每个单词首字母大写(helloWorld)
    3.变量名:小驼峰

    不合法标识符如下(示例):
    1.public(关键字)
    2.520shy(数字开头)
    3.zhao.d(出现陌生符号)

    二、数据类型

    java当中的整型与浮点数都是严格带有符号位

    在这里插入图片描述

    java中有8种基本数据类型

    如下(示例):

    数据类型关键字字节大小
    字节型byte1
    短整型short2
    整型int4
    长整形long8
    单精度浮点数float4
    双精度浮点数double8
    字符型char2
    布尔型boolean没有明确规定

    大家特别应该注意:
    1.在java种字符型占2字节,因为在C语言种使用的是ASCII编码,java种使用的是unicode编码方式.
    2.不论是在x64,x86环境下,int都占用4字节,long占用8字节.

    三、变量

    因为Java是一门安全性十分高的语言,在我们入门的时候,会犯各种各样的小错误,让我们一起来探究一下吧.

    1.无初始化

     public static void main(String[] args) {
            int a;
            System.out.println(a);
        }
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在java当中,局部变量未进行初始化,系统会编译错误.

    解决方案:
    1.初始化
    2.赋值

    public static void main(String[] args) {
            int a;
            a=10;//1.赋值
            System.out.println(a);
            int b=10;//2.初始化
            System.out.println(b);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    2.赋值超出范围

    public static void main(String[] args) {
            int a=2147483648;
            System.out.println(a);
        }
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    在这里我们探讨一下整数的范围:因为java的数据是具有符号位的.

    在这里插入图片描述

    在这里我们使用Java的包装类进行计算:

    在这里插入图片描述

    在这里插入图片描述
    我们可以看到在最上面的程序中赋值超过了Int的范围,所以编译的时候会报错.

    3.long与float的使用

    在java中默认整型为int型,浮点型默认为double

    在这里插入图片描述

    有以下规定:
    1.在定义float类型时在数据后面加一个f
    2.在定义long类型时在数据后面加一个L

    public static void main(String[] args) {
            float a=3.5f;
            long b=10L;
        }
    
    • 1
    • 2
    • 3
    • 4

    4.除法的使用

    public static void main(String[] args) {
            int a=3;
            int b=2;
            System.out.println(a/b);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里会输出1.5吗?
    在这里插入图片描述

    在Java中,int值只能保存整数部分,不管小数多少,直接舍弃

    解决方案:

      public static void main(String[] args) {
            int a=3;
            int b=2;
            System.out.println(a*1.0/b);
            double c=3.0;
            double d=2.0;
            System.out.println(c/d);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    5.浮点数的精度问题

    public static void main(String[] args) {
            double ret=1.1;
            System.out.println(ret*ret);
        }
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    因为浮点数在内存中的存储问题,double类型的内存遵守IEEE 754标准,因为在存储时会有一定的精度误差,所以浮点数并不是一个准确值,而是一个近似值.

    6.boolean类型变量的使用

    public static void main(String[] args) {
            boolean b=true;
            System.out.println(b+1);
        }
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    在Java中不存在0表示假,1表示真的说法.
    boolean类型的变量只有两种取值,true表示真,false表示假

    7.类型提升

    情况1:

    public static void main(String[] args) {
            int a=2;
            long b=3L;
            int c=a+b;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    int与long进行计算时,会把int转换成long,所以存放给int时会报错.

    情况2:

    public static void main(String[] args) {
            short a=10;
            short b=20;
            short c=a+b;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    原因如下:a和b都是short,在运算过程中会把a,b都提升为Int在计算.
    CPU通常是按照4个字节从内存中读写数据,为了实现方便,所以低于4字节的类型,会先提升为Int,在计算.

    四、初始字符串

    在java中引入了一种新的数据类型:字符串类型.

    public static void main(String[] args) {
            String s1="woyao";
            String s2="jindachang";
            System.out.println(s1+s2);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    C# 给Word中的字符添加强调符号(着重号)
    elasticdump官方教程
    lodash-es 基本使用
    【从零开始的Java开发】1-5-2 包装类与基本数据类型、常用API、基本数据类型与包装类、字符串之间的转换、包装类的初始值与比较、对象常量池
    Scala入门教程
    java扶贫平台计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    ARMday01(计算机理论、ARM理论)
    Nginx日志分析和统计
    元宇宙-虚拟世界的安全风险如何应对
    基于偏二叉树SVM多分类算法的应用层DDoS检测方法
  • 原文地址:https://blog.csdn.net/buhuisuanfa/article/details/125988844