当前位置: 首页 > news >正文

Java数据类型与变量

个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【JavaSE_primary】
在这里插入图片描述

文章目录

  • 字面常量
  • 数据类型
  • 变量
    • 整型变量
    • 字节型变量
    • 浮点数变量
      • 双精度浮点数
      • 单精度浮点数
    • 字符型变量
    • 布尔型变量
    • 空常量null
  • 类型转换
    • 类型提升
  • 字符串类型

字面常量

字面常量的分类:

1.字符串常量:如"hello"、“world”、“123”、“晚安”。
2.整型常量:与C语言中的整型是一个意思,即就是一个整数,如100、200、666。
3.浮点数常量:就是小数,如3.14、3.15、5.13。
4.字符常量:由单引号引起来的字符。如:‘A’、‘1’。
5.布尔常量:布尔常量就只有两种,即true和false
6.空常量:null。

在Java中,字符串、整型、浮点型、字符型以及布尔型,都称为数据类型。

数据类型

Java数据结构分为两类:基本数据结构和引用数据结构
基本数据类型一共4类,8种:

4类:整型、浮点型、字符型、布尔型。
8种:字节型、短整型、整型、长整型、单精度浮点数、双精度浮点数、字符型、布尔型。

数据类型关键字内存占用范围
字节型byte1字节-128~127
短整型short2字节-32768~32767
整型int4字节-2^31 ~ 2^31-1
长整型long8字节-2^61 ~ 2^61
单精度浮点数float4字节有范围,但不需要关注
双精度浮点数double8字节有范围,但不需要关注
字符型char2字节0~65535
布尔型boolean没有明确范围true和false

需要注意的是:

  • 无论是在32为平台还是在64位平台,int都是占用4个字节,long都占8个字节。
  • 整型和浮点型都是带有符号的。
  • 整型默认为int,浮点型默认为double。
  • 1KB=1024Byte,而一个Byte包括8个比特位。

变量

变量嘛,当然就是可以变得东西喽,对于那些可以经常改变的变量,在Java程序种称之为变量,而数据类型就是用来定义不同种类的变量的。

定义变量的语法格式:

数据类型 变量名=初始值

比如:

int a=10;//a就是变量名,类型为整型,也可以把a称之为标识符,该变量a中放置的值为10。

 int a=10;double b=20;float c=20;char d='A';boolean e=true;System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);System.out.println(e);

在这里插入图片描述

整型变量

这是整型变量的定义:

 int a=10;System.out.println(a);

注意,请看我这样定义一个整型变量可不可以呢?

 int a;System.out.println(a);

答案是否定的,在Java中,当一个局部变量(定义在方法中的变量)没有被初始化(即被赋为初值)时,那么这个变量是不允许被使用的,是不能够通过编译的。

我们看看int类型在Java中可以表示的数的范围:

 System.out.println(Integer.MAX_VALUE);//int类型的最大值System.out.println(Integer.MIN_VALUE);//int类型的最小值

在这里插入图片描述

同理来看看长整型的范围:

   System.out.println(Long.MAX_VALUE);System.out.println(Long.MIN_VALUE);

在这里插入图片描述
长整型注意事项

1.长整型变量的初始值后加L或者l,一般的花是加L。(如 long d=10L;
2.长整型无论在哪个系统下都占8个字节。
3.long的包装类型为Long。

字节型变量

  byte g=10;System.out.println(g);System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);

在这里插入图片描述

字节型的包装类型为Byte。
byte在任何系统中都占1个字节。

浮点数变量

双精度浮点数

double a=1.1;
System.out.println(a*a);

在这里插入图片描述
为什么这里的结果不是具体的1.21呢?因为小数在计算机当中没有一个非常具体的完全的表示,只能说精确到某一位(比如说精确到后6位)。

1.double类型在任何系统下都是占8个字节
2.double的包装类型为Double。
3.double类型的内存布局遵守IEEE 754标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差,因此浮点数是一个近似值,不是精确值

单精度浮点数

在这里插入图片描述
我们可以看到定义一个单精度浮点数变量时,如果53.2不加f或者F的话,会被默认为double类型,float为4个字节,而double占8个字节,所以计算机认为这个不安全的操作。所以我们在定义float类型变量时需要在初始值的后面加上f或者F。即 float n=53.2f;

float类型在Java中占用4个字节,同样遵循IEEE 754标准。由于表示的数据精度范围较小,一般在工程上用到浮点数都优先考虑double,另外float的包装类型为Float

字符型变量

 char ch='a';//注意占用的是2个字节char ch2='好';//也可以表示汉字System.out.println(ch);System.out.println(ch2);

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

布尔型变量

boolean flg=true;
System.out.println(flg);

在这里插入图片描述
注意:1.在Java中,boollean类型的值只有两个,要么是true要么是false。没有像C语言那样0是假,非零就是真的说法。
2.java虚拟机规范中,没有明确规定Boolean占几个字节,也没有专门来处理Boolean的字节码指令,在Oracle公司的虚拟机中,boolean占用1个字节。
3.Boolean的包装类型为Boolean

空常量null

类型转换

在Java中,不同类型的之间的变量相互赋值的时候,会有较为严格的校检。
而在Java中,类型转换主要分为两类:自动类型转换(隐式)和强制类型转换(显示)。
举个简单的例子:

int a=10;
long b=20;
b=a;//编译可以通过,a和b都是整型,但是a的范围小(4个字节),b的范围大(8个字节),编译器会自动提升a为long类型,然后进行赋值
a=b;//编译不可以通过,会有数据丢失,不安全

简单来说:
1.大范围的是不可以转成小范围的(数据可能丢失,不安全),但是小范围可以转成大范围的。
2.两个毫不相干的类型是不能进行强制类型转换的。

比如:

int a=10;
boolean flg=true;
flg=(bollean)a;//编译失败,因为这两个类型毫不相干。

自动类型转换:意思是代码不需要进行任何人为的处理,在进行代码编译的时候,编译器会自动进行处理,特点:数据范围小的转换为数据范围大的时会进行自动进行转换。

类型提升

1.int和long:int可以提升为long,但long不可以转为int
例如:

        int a=10;long b=20;int c=a+b;

在这里插入图片描述
4字节和8字节进行运算时,会先把4字节提升为8字节,然后再来进行运算,最后结果一定是8字节。
这里有两种解决方法
方法1:将其结果强转为int类型。
在这里插入图片描述
方法2:
在这里插入图片描述
2.byte和byte之间的运算
在这里插入图片描述
当参与运算的数据小于4个字节的时候,会进行提升。
我们当然可以进行强制类型转换,如byte c = (byte)(a+b);,但是,所有的强制类型转换都是有风险的,尽管编译可以通过。
正确的写法是这样的:
在这里插入图片描述
由于计算机的CPU通常是按住4个字节为单位从内存中读写数,为了硬件上实现方便,诸如short和byte这种低于4字节的类型,会先提升为int,在参与计算。

字符串类型

在C语言中,字符串是以\0为结尾的。
而在Java中,字符串并不是以\0为结尾的

String s="hello";
System.out.println(s);

注意:当字符串和整数在一起使用+号的时候,就是拼接的意思。比如:
举个例子:

 int a=10;int b=20;System.out.println(a+b);System.out.println("a:"+a+"b:"+b);

在这里插入图片描述

在比如:
在这里插入图片描述

在这里插入图片描述

String s1="hello ";
String s2="world";
System.out.println(s1+s2);

在这里插入图片描述
1.int转为String
比如:

        int num=10;//方法1String str1=num+"";System.out.println(str1);//方法2(借助方法)String str2=String.valueOf(num);System.out.println(str2);

在这里插入图片描述

2.String转为int

        String str="1234";//方法1int a=Integer.parseInt(str);System.out.println(a+1);//方法2a=Integer.valueOf(str);System.out.println(a+1);

在这里插入图片描述
好了,以上就是Java数据类型与变量的基本内容。
主要是Java中的各种常量,各种类型,以及类型转换的一些内容。
就到这里吧,再见了各位!!!
在这里插入图片描述

相关文章:

Java数据类型与变量

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【JavaSE_primary】 文章目录字面常量数据类型变量整型变量字节型变量浮点数变量双精度浮点数单精度浮点数字符型变量布尔型变量空常量nu…...

Python为CANoe工程添加/删除DBC文件

前面文章我们对于通过COM来实现打开CANoe、导入CANoe配置工程、导入执行文件、启动CANoe软件和执行脚本;但是这只能完成最基本的功能调用,在实际得到使用过程中,特别是各家在推的CI/CD以及平台化,仅仅是实现这些功能是完全不够用的;比如dbc的添加和删除,这是我们非常必要…...

不同的产品经理特征和需要的能力

产品经理是一个管家,需要和各方沟通推动产品各个决策进展。 每天早上看看线上用户数据、看下今天要安排任务,接着就是和各方开会讨论推动产品实现。每天穿插于与 UI、用户以及完成自己的 todolist 中循环。如果公司体制完善,还要和运营、数据…...

webpack之处理样式资源

处理样式资源 本章节我们学习使用 Webpack 如何处理 Css、Less、Sass、Scss、Styl 样式资源 #介绍 Webpack 本身是不能识别样式资源的,所以我们需要借助 Loader 来帮助 Webpack 解析样式资源 我们找 Loader 都应该去官方文档中找到对应的 Loader,然后…...

Golang 接口笔记

基本介绍接口是一个数据类型,可以定义一组方法,但都不需要实现。并且interface中不能包含任何变量。到某个自定义类型要使用的时候,再根据具体情况把这些方法实现出来语法type 接口名 interface {method1(参数列表) 返回值列表method2(参数列…...

[计算机网络(第八版)]第二章 物理层(章节测试/章节作业)

章节作业 带答案版 选择题 (单选题)双绞线是用两根绝缘导线绞合而成的,绞合的目的是( )。 A. 减少干扰 B. 提高传输速度 C. 增大传输距离 D. 增大抗拉强度(单选题)在电缆中采用屏蔽技术可以带来的好处主要是( )。 A…...

[iOS 理解] Swift Runtime (1) 类

Warm up 先看一段代码: import ObjectiveCclass Obj {var x: Double 0 }let v: NSObjectProtocol Obj() as! NSObjectProtocol let result v.isKind(of: Obj.self) let size class_getInstanceSize(Obj.self)我们有一个没有继承 NSObject、没有遵循 NSObjectP…...

ASEMI低压MOS管20N06参数,20N06体积,20N06大小

编辑-Z ASEMI低压MOS管20N06参数: 型号:20N06 漏极-源极电压(VDS):60V 栅源电压(VGS):20V 漏极电流(ID):20A 功耗(PD&#xff0…...

常见前端基础面试题(HTML,CSS,JS)(四)

作用域和作用域链的理解 作用域 (1)全局作用域 最外层函数和最外层函数外面定义的变量拥有全局作用域所有未定义直接赋值的变量自动声明为全局作用域所有window对象的属性拥有全局作用域全局作用域有很大的弊端,过多的全局作用域变量会污染…...

RabbitMQ发布确认模式

目录 一、发布确认原理 二、发布确认的策略 (一)开启发布确认的方法 (二)单个确认模式 (三)批量确认模式 (四)异步确认模式 (五)如何处理异步未确认消…...

零基础的人如何入门 Python ?看完这篇文章你就懂了

第一部分:编程环境准备 零基础入门Python的话我不建议用IDE,IDE叫集成开发环境,这东西一般是专业程序员用来实战开发用的,好处很多,比如:调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测…...

Atcoder abc257 E

E - Addition and Multiplication 2 题意: 给你一个数字n表示你现在拥有的金额 然后给你1~9每个经营额所需要的成本, 设总经营额为x, 当前使用的经营额为y, 则每一次使用经营额时都有x10*xy 问, 如何在使用不大于成本数量的金额下, 使得经营额最高 例如: 5 5 4 3 8 1 6 7 …...

模拟退火算法改进

import numpy as np import matplotlib.pyplot as plt import math import random from scipy.stats import norm from mpl_toolkits.mplot3d import Axes3D # 目标函数 def Function(x, y): return -20 * np.exp(-0.2*np.sqrt(0.5*(x*xy*y)))\ -np.exp(0.5*(n…...

SpringBoot+HttpClient+JsonPath提取A接口返回值作为参数调用B接口

前言 在做java接口自动化中,我们常常需要依赖多个接口,A接口依赖B,C,D接口的响应作为请求参数;或者URL中的参数是从其他接口中提取返回值作获取参数这是必不可少的。那么怎么实现呢?下面就来介绍多业务依赖…...

JUC 之 CompletableFuture

——CompletableFuture Future Future 接口(FutureTask 实现类) 定义了操作异步任务执行的一些方法,如获取异步的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕例如: 主线程让一个子线程去执行任务&…...

7-vue-1

谈谈你对MVVM的理解 为什么要有这些模式,目的:职责划分、分层(将Model层、View层进行分类)借鉴后端思想,对于前端而已,就是如何将数据同步到页面上 MVC模式 代表:Backbone underscore jquer…...

OpenAPI SDK组件介绍

背景 公司成立以来,积累了数以万计的可复用接口。上层的SaaS业务,原则上要复用这些接口开发自己的业务,为了屏蔽调用接口的复杂性,基础服务开发了apisdk组件,定义了一套声明OpenAPI的注解、注解解析器,实例…...

【Java】Synchronized锁原理和优化

一、synchronized介绍 synchronized中文意思是同步,也称之为”同步锁“。 synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。 synchronized是Java中解决并发问题的一种最常用的方法…...

西北工业大学2020-2021学年大物(I)下期末试题选填解析

2 位移电流。磁效应服从安培环路,热效应不服从焦耳-楞次定律。注意,它是变化的电场而非磁场产生。3 又考恒定磁场中安培环路定理。4感生电场5 麦克斯韦速率分布函数。6 相同的高温热源和低温热源之间的一切可逆热机的工作效率相等,无论工质如…...

PHP - ChatGpt API 接入 ,代码,亲测!(最简单!)

由于最近ChatGpt 大火,但是门槛来说是对于大家最头疼的环节, 我自己也先开发了一个个人小程序!大家可以访问使用下, 由此ChatGpt 有一个API 可以仅供大伙对接 让我来说下资质: 1:首先要搞得到一个 ChatGp…...

物联网MQTT协议简单介绍

物联网曾被认为是继计算机、互联网之后,信息技术行业的第三次浪潮。随着基础通讯设施的不断完善,尤其是 5G 的出现,进一步降低了万物互联的门槛和成本。物联网本身也是 AI 和区块链应用很好的落地场景之一,各大云服务商也在纷纷上…...

Dubbo 源码解读:负载均衡策略

概览 org.apache.dubbo包下META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance中内部spi实现类有以下几种: randomorg.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance roundrobinorg.apache.dubbo.rpc.cluster.loadbalance.RoundRobinL…...

吃瓜教程笔记—Task04

神经网络 知识点 M-P神经元 模型如图所示:  神经元的工作机理:神经元接收来到n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过…...

进程地址空间(虚拟地址空间)

目录 引入问题 测试代码 引入地址空间 故事1: 故事二: 解决问题 为什么有虚拟地址空间 扩展 扩展1(没有地址空间,OS如何工作) 扩展2 (代码只读深入了解) 扩展3(malloc本质…...

【项目精选】基于Vue + ECharts的数据可视化系统的设计与实现(论文+源码+视频)

今天给小伙伴们推荐一款超优秀的全新Vue3.0大数据系统Vue3-bigData。 点击下载源码 vue3-bigdata 基于vue3.0echarts构建的可视化大屏图表展示系统。包括各种可视化图表及Vue3新API使用。 功能 柱状图、饼图、词云图、漏斗图 水球图、折线图 仪表盘、雷达图 矩形树图、关系…...

JavaScript Window Screen

文章目录JavaScript Window ScreenWindow ScreenWindow Screen 可用宽度Window Screen 可用高度JavaScript Window Screen window.screen 对象包含有关用户屏幕的信息。 Window Screen window.screen对象在编写时可以不使用 window 这个前缀。 一些属性: screen…...

【双重注意机制:肺癌:超分】

Dual attention mechanism network for lung cancer images super-resolution (肺癌图像超分辨率的双重注意机制网络) 目前,肺癌的发病率和死亡率均居世界恶性肿瘤之首。提高肺部薄层CT的分辨率对于肺癌筛查的早期诊断尤为重要。针对超分辨…...

各种中间件的使用

init background 这一部分我们学习一些常用的, 但是不需要深入理解的中间件 , 例如kafka ,分布式文件系统。 summary Content what is kafka? What time to used it ? 其实消息队列就是解决系统之间复杂交互例如聊天系统和交易系统, …...

Systemverilog覆盖率的合并和计算方式

在systemverilog中,对于一个covergroup来说,可能会有多个instance,我们可能需要对这些instance覆盖率进行操作。 只保存covergroup type的覆盖率,不需要保存instance-specified的覆盖率coverage type和instance-specified的覆盖率…...

(周末公众号解读系列)2000字-视觉SLAM综述

参考链接:https://mp.weixin.qq.com/s?__bizMzg2NzUxNTU1OA&mid2247528395&idx1&sn6c9290dd7fd926f11cbaca312fbe99a2&chksmceb84202f9cfcb1410353c805b122e8df2e2b79bd4031ddc5d8678f8b11c356a25f55f488907&scene126&sessionid1677323905…...