java编程数据类型全面详解教程新手必入

目录
  • 前言
  • 变量和类型
    • 1 整形int
    • 2 长整形long
    • 3 双精度浮点型(重点)
    • 4 单精度浮点型
    • 5 字符型
    • 6 字节类型
    • 7 短整型
    • 8 布尔类型
    • 9 字符串类型(重点)
    • 10 变量的作用域
    • 11 变量的命名规则
      • 硬性指标:
      • 软性指标:
    • 12 常量
    • 13 强制类型转换
    • 14 理解数值提升
    • 15 int和String类型的相互转换
  • 总结

前言

大家好呀!这是笔者的java板块,今天起笔者开始了java部分的相关学习,会不定期更新java的文章。
提示:以下是本篇文章正文内容,下面案例可供参考

变量和类型

变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存一些数据。
类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性。
我们讨论的“变量”和我们的“内存”这样的硬件设施密切相关

(图片来自比特就业课)

变量相当于一个箱子,可以存放一些数据
类型相当于箱子的种类,不同类型,意味着箱子种类不一样,种类不一样,箱子存储的东西自然是不一样的

1 整形int

public class TestDemo {
    public static void main(String[] args) {
     int a=10;
        System.out.println(a);//打印10
        System.out.println(Integer.MAX_VALUE);//打印2147483647,Integer是java的一个包装类,是一个简单类型,你可以理解Integer就是int
        System.out.println(Integer.MIN_VALUE);//打印-2147483648
     //和c语言一样,整形int不管你系统是16位、32位还是64位,int类型统一占4字节
        //区别c语言,java里的整形int是没有无符号类型的,数字统一都有符号
        //int是4字节,也就是32比特位,32位中的最高位是符号位(1为负,0为正)
        //除去32位中的符号位剩余的31位分别对应1和0两种情况,所以最大是2^31-1=2147483647
        //ps:为什么2^31要-1,因为符号位是0的2^31种情况中有0这种情况,正数要-1
        //最小的是-2^31=-2147483648
        //变量的命名:小驼峰->由数字、字母、下划线、美元符号组成
        int 钱=100;//有意思的是java可以用中文来做变量名
        System.out.println(钱);//打印100,不会报错
    }
}

整形数据范围示意图

2 长整形long

数据范围这里和上面整形思路一样,long是8个字节,64比特位,最高位符号位,所以最大值2^ 63-1, 最小值-2^63

public static void main(String[] args) {
        long a=10;//ps:写long a=10L或者long a=10l(小写的L)结果都是一样的
        System.out.println(a);//打印10
        System.out.println(Long.MAX_VALUE);//打印2^63-1=9223372036854775807
        System.out.println(Long.MIN_VALUE);//打印-2^63=-9223372036854775808
    }

注意:java中没有long long类型

3 双精度浮点型(重点)

double类型占8个字节

public static void main(String[] args) {
        double d=3.1415926;//double是8个字节
        System.out.println(d);//打印3.1415926
        int a=1;
        int b=2;
        System.out.println(a/b);//打印0,java中int除int还是int型,如果要得到小数必须除数或被除数至少有一个是double型
        int c=1;
        double f=2;
        System.out.println(c/f);//打印0.5
    }

4 单精度浮点型

float类型占4个字节

public static void main(String[] args) {        //float a=1.1;        // 1.1java默认是一个double类型,对于c语言来说double型到float型是可以通过的,只是会报警告        //但对于java来说只要类型不匹配,就不能运行,一定会报错        float a=1.1f;//要想1.1是float类型,后面要跟一个f或者F    }

5 字符型

char(java中占2个字节)
1.java中使用单引号+单个字母的形式表示字符字面值
2.计算机中的字符本质是一个整数,在C语言中用ASCII表示字符,而java中使用的是Unicode表示字符。因此一个字符占用两个字节,表示的字符种类更多,包括中文

public static void main(String[] args) {
        char ch='a';
        System.out.println(ch);//打印a
        char dh='嘿';//一个汉字2个字节,char是2个字节,所以这里也是可以赋值的
        System.out.println(dh);//打印“嘿”
        char eh=97;
        System.out.println(eh);//打印a,赋值是整数给char类型的话,会自动转换为数字对应的字符
    }

6 字节类型

byte类型占1个字节(联想c语言中的char)

public static void main(String[] args) {
        byte b=10;
        System.out.println(b);//这里正常打印10
        //byte c=130;//这里会报错
        //为什么10可以130就不可以呢?
        //byte是1个字节,8比特位,除去符号位只有7比特位
        //7比特位最高是127,最低是-128
        //所以byte类型的范围是-128-127
    }

在java中,数值类型都是有取值范围的,存储数据的时候,不要超过范围,否则编译无法通过。

7 短整型

short类型占2个字节

public static void main(String[] args) {
        short s=10;//short类型的取值范围是-2^16到2^16-1
        System.out.println(s);//打印10
    }

8 布尔类型

public static void main(String[] args) {
        boolean flg1=true;//非0为真,0为假
        System.out.println(flg1);//java中布尔类型只有两种情况:true或false
        boolean flg2=false;
        System.out.println(flg2);
        //JVM没有明确规范布尔类型的大小。有些书说1bit有些书说1字节
        //布尔类型不能进行数值运算,比如flag+1这种都是不行的
    }

注意:
1.boolean类型的变量只有两种取值,true为真,false为假
2.java的boolean类型和int不能相互转换,不存在 1表示true,0表示false
3.boolean类型有些JVM的实现是占1个字节,有些是占1个比特位,这个没有明确规定。

9 字符串类型(重点)

把一下字符放到一起构成字符串
String 变量名=“初始值”

public static void main(String[] args) {
        String str="hello";
        System.out.println(str);
        String str2="world";
        System.out.println(str+str2);//可以把两个字符串拼接起来
        System.out.println(str+10+20);//其他数据类型与字符串类型使用+拼接,结构是一个字符串
        //打印hello1020,10跟着hello已经变成字符串了,所以不会与20相加
        System.out.println(10+30+str);
        //打印40hello,解释:因为计算机读这段代码是从左到右,两int型还没变成字符串算起来是40
        System.out.println(str+(10+20));//如果要打印hello30,加个括号即可
        System.out.println("a="+10+",b="+20);//a=10,b=20
        String s1="\"bit\"";//现在要打印”bit“,只要对两边的双引号转义即可
        System.out.println(s1);
    }

10 变量的作用域

也就是该变量能生效的范围,一般是变量定义所在的代码块,也就是大括号{}

public static void main(String[] args) {
        int a=10;
        {
            a=99;
        }
        System.out.println(a);//打印99
        {
            int b;
        }
        //System.out.println(b);//无法打印b,已经出了b的作用域
    }

11 变量的命名规则

硬性指标:

1.一个变量名只能包含数字、字母、下划线
2.数字不能作为开头
3.变量名是大小写敏感的,举例说明:num和Num是两个不同的变量
ps:语法上虽然运行使用中文/美元符号($)命名,但是强烈不推荐这样做

软性指标:

1.变量命名要具有描述性,见名知意
2.变量名不宜使用拼音
3.变量名的词性推荐使用名词
4.变量命名推荐小驼峰命名法,当一个变量名由多个单词构成时,除了第一个单词之外,其他首字母大写
比如maxValue

12 常量

常量:
1.字面值常量:比如单纯一个数字,或者字符串等等
2.final修饰的变量会变成常量

ps:常量和变量的简单区别:
常量就是程序运行时不可改变的量
变量就是程序运行时可以改变的量

public static void main(String[] args) {
        final int c=10;//final修改的变量就不能修改了,类似c语言中的const
        //c=2;//c不可修改,该句c=2会报错
        System.out.println(c);
    }

13 强制类型转换

public static void main(String[] args) {
        int a=10;//int是4字节
        long b=a;//long是8字节
        System.out.println(b);//4字节赋给8字节没有问题
        long c=12;
        //int d=c;//8字节赋给4字节会报错
        int d=(int)c;//强制类型转换后才能赋值
        boolean e=true;
        //int f=(int)e;//两个毫不相关的类型就算是强转也不能赋值

    }

long表示的范围更大,可以将int赋值给long,但是不能将long赋值给int。就好比我们现在把西瓜和芝麻里面掏空,你可以把空芝麻放到空西瓜里,但是不能把西瓜塞到芝麻里,如果你非要塞,好,请你把西瓜切的和芝麻一样大,也就是把long强制转换成int

结论:不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围更大的类型

注意:int和boolean这种完全不相干的类型,即使强制类型转换也是不能赋值的(boolean根本表示数值类型)

14 理解数值提升

public static void main(String[] args) {
        byte a=1;//byte是1个字节,也就是4bit位,那它的有效范围应该是-128-127
        byte b=2;
        //byte c=a+b;这里会报错:小于4字节运算时会把变量自动提升到整形,整形后赋给byte是不可以的
        byte c=(byte)(a+b);//要赋值a+b要对他们的结果强制类型转换
        byte d=1+2;//这里为什么不报错呢?1和2都是常量,程序编译的时候1+2就已经编译成3了
        //也就是说上一行代码==byte d=3;
        int a1=10;
        long a2=20;
        //int a3=a1+a2;这里运算时,小类型会提升为大类型,这里a1会提升到long类型,直接写会报错
        int a3=(int)(a1+a2);//必须对结果进行强转
        String e=String.valueOf(a1);//把int型转换为String类型
        System.out.println(e);
        //整数变字符串法二
        String f=a1+"";//整数加字符串就变字符串了
        System.out.println(f);
    }

15 int和String类型的相互转换

public static void main(String[] args) {
        int a1=10;
        String e=String.valueOf(a1);//把int型转换为String类型
        System.out.println(e);//打印字符10
        //整数变字符串法二
        String f=a1+"";//整数加字符串就变字符串了
        System.out.println(f);
    }

总结

本文介绍了java的所有数据类型,强制类型转换和数值提升是本文的重点,但在实际运用中,我们还是推荐减少不同类型混用的情况,防止出错。以上,祝读者学习愉快,事业有成,希望大家以后多多支持我们!

(0)

相关推荐

  • Java的数据类型和参数传递(详解)

    Java提供的数据类型主要分为两大类:基本数据类型和引用数据类型. Java中的基本数据类型 名称 大小 取值范围 byte型 (字节) 8bit -128-127 (-2^7到2^7-1) short型 (短整型) 16bit -2^15到2^15-1 int型 (整形) 32bit -2^31到2^31-1 long型 (长整型) 64bit -2^63到2^63-1 float型 (单精度浮点型) 32bit double型 (双精度浮点型) 64bit char型 (字符型) 16bit

  • java的五种数据类型解析

    不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自动初始化为默认值,除非显式地声明.简单数据类型为某一方法声明局部变量时不会自动地初始化而且会导致编译器扔出类似以下的错误消息"Variable x may not have been initialized.(x变量没有初始化)"表B定义了Java简单数据类型的默认值. 二.封装类 1av

  • Java中的8大基本数据类型详解

    前言:做一下笔记. 1.Java基本数据类型图 2.Java基本数据类型 整数类型:byte,1字节,8位,最大存储数据量是255,存放的数据范围是-128~127之间. 整数类型:short,2字节,16位,最大数据存储量是65536,数据范围是-32768~32767之间. 整数类型:int,4字节,32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1. 整数类型:long,8字节,64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方

  • JAVA基础之基本数据类型全面解析

    基本数据类型: 一.数值型 1)整数: 1.byte一个字节,8位,取值范围0~255,用于存放二进制数据. 2.short两个字节,16位,取值范围是在-32768~32767之间. 3.int四个字节,32位,取值范围为-2147483648~2147483648之间 4.long八个字节,64位,取值范围为 -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807之间 2)浮点型: 1.float,四个字节,单精度浮点数,范围为-2^128

  • 全面解析Java支持的数据类型及Java的常量和变量类型

    基本数据类型 变量就是用来储存值而保留的内存位置.这就意味着当你创建一个变量时就会在内存中占用一定的空间. 基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中.因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字字母. Java 中有两种有效地数据类型: 原始数据类型 引用数据类型 原始数据类型 Java 支持 8 种原始数据类型.原始数据类型是由该语言预先定义的并用关键词命名的.下面让我们深入学习一下这 8 种数据类型. 字节型(byte) 字节型

  • java编程数据类型全面详解教程新手必入

    目录 前言 变量和类型 1 整形int 2 长整形long 3 双精度浮点型(重点) 4 单精度浮点型 5 字符型 6 字节类型 7 短整型 8 布尔类型 9 字符串类型(重点) 10 变量的作用域 11 变量的命名规则 硬性指标: 软性指标: 12 常量 13 强制类型转换 14 理解数值提升 15 int和String类型的相互转换 总结 前言 大家好呀!这是笔者的java板块,今天起笔者开始了java部分的相关学习,会不定期更新java的文章. 提示:以下是本篇文章正文内容,下面案例可供参

  • java编程学习输入输出详解看完快速上手

    目录 一.输出到控制台 二.从键盘输入 1.读取一个字符(了解) 2.Scanner 三.循环读取 总结 一.输出到控制台 基本语法 public static void main(String[] args) { System.out.println("输出且换行"); System.out.print("输出且不换行");//print和println的区别就是c语言中printf加不加\n的区别 System.out.printf("%d\n&quo

  • Java编程读写锁详解

    ReadWriteLock也是一个接口,提供了readLock和writeLock两种锁的操作机制,一个资源可以被多个线程同时读,或者被一个线程写,但是不能同时存在读和写线程. 基本规则: 读读不互斥 读写互斥 写写互斥 问题: 既然读读不互斥,为何还要加读锁 答: 如果只是读,是不需要加锁的,加锁本身就有性能上的损耗 如果读可以不是最新数据,也不需要加锁 如果读必须是最新数据,必须加读写锁 读写锁相较于互斥锁的优点仅仅是允许读读的并发,除此之外并无其他. 结论: 读写锁能够保证读取数据的 严格

  • Kotlin编程基础数据类型示例详解

    目录 本文总览 1.数值类型 2.布尔型 3.字符串 3.1 字符串字面值 3.2 字符串模板 4.数组 4.1 普通数组 4.2 原⽣类型数组 5.类型检测和类型转换 5.1 智能转换 5.2 is 与 !is 操作符 5.3 转换操作符: as 与 as? 总结 本文总览 上一篇学习了Kotlin基础语法知识,本篇开始会深入探讨一下Kotlin各个基础语法点.首先来熟悉Kotlin的数据类型和类型转换版块. 1.数值类型 在Kotlin中提供了数值类型: 整数类型:Byte,Short,In

  • Java并发编程-volatile可见性详解

    前言 要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸.最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍. 有什么用? volatile主要对所修饰的变量提供两个功能 可见性 防止指令重排序 <br>本篇博客主要对volatile可见性进行探讨,以后发表关于指令重排序的博文. 什么是可见性? 把JAVA内存模型(JMM)展示得很详细了,简单概括一下 1.每个Thread有一个属于自己的工作内存(可以理解为每个

  • Java aop面向切面编程(aspectJweaver)案例详解

    面向切面编程的目的就是:在不改变别人的代码的前提下,在别人代码方法执行前或后,执行(切入自己的逻辑) 准备:idea+maven+aspectjweaver-1.8.9.jar 结构图: pom.xml内容 <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.9&

  • Java并发编程ThreadLocalRandom类详解

    目录 为什么需要ThreadLocalRandom ThreadRandom原理详解 为什么需要ThreadLocalRandom java.util.Random一直都是使用比较广泛的随机数生成工具类,而且java.lang.Math中的随机数生成也是使用的java.util.Random实例. 我们下面看一下java.util.Random的使用方法: import java.util.Random; public class code_4_threadRandom { public sta

  • Java多线程编程综合案例详解

    目录 Java多线程综合案例 数字加减 生产电脑 竞争抢答 Java多线程综合案例 数字加减 设计4个线程对象,两个线程执行减操作,两个线程执行加操作 public class ThreadDemo{ public static void main(String[] args) throws Exception { Resource res=new Resource(); AddThread at=new AddThread(res); SubThread st=new SubThread(re

  • Python NumPy教程之数据类型对象详解

    每个 ndarray 都有一个关联的数据类型 (dtype) 对象.这个数据类型对象(dtype)告诉我们数组的布局.这意味着它为我们提供了以下信息: 数据类型(整数.浮点数.Python 对象等) 数据大小(字节数) 数据的字节顺序(小端或大端) 如果数据类型是子数组,它的形状和数据类型是什么. ndarray 的值存储在缓冲区中,可以将其视为连续的内存字节块.所以这些字节将如何被解释由dtype对象给出. 构造数据类型(dtype)对象 数据类型对象是 numpy.dtype 类的一个实例,

  • Java中final关键字详解

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. 主要介绍:一.final关键字的基本用法.二.深入理解final关键字 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能

随机推荐