学透Java中的变量与基本数据类型,看这篇就够了。变量

什么是变量:

java是强类型语言,所有的变量都必须先声明才能使用,声明变量时必须指定变量存储信息的类型。变量的声明一般使用名值对的方式,包含变量名和变量值,通过变量名可以引用变量值,也可以修改变量名的值。

  首先,声明一个变量的基本格式是:

   数据类型 变量名;

       int type;       boolean flag;       float score;

  上面提到变量的声明一般使用名值对的格式,具体格式如下:

   数据类型 变量名 = 数值;

     int box=100;       int a=300;       boolean f=true;

  可以在同一行同时声明多个同一类型的变量,这样可以简化我们的代码,提高可阅读性,具体格式如下:

int a,b,c;

上面例子中,同时声明了三个整型变量(a,b,c),变量和变量之间使用英文逗号(,)隔开。当然我们也是可以想上面介绍的,为变量赋予初始值。如下面这个例子:

 //变量a和变量c分别赋予了初始值。  int a=100,b,c=20;

变量声明后,我们就可以通过变量名引用变量值或者修改变量名所存储的值了。在同一作用域下,变量只能声明一次,但是可以多次的赋值,不断根据程序的需要修改变量原来存储的变量值。具体格式如下:

变量名 = 新的数值;

引用该变量名的值就更简单了,直接使用变量名即可。如下面这个例子:

     //声明变量a,并同时赋初始化值是100;      int a=100;      //引用变量a,这时候输出的是变量所存储的值,应该是100      System.out.println(a);      //为赋值200      a=200;      //再次引用变量a,输出的也是变量所存储的值,但这时候应该是200了      System.out.println(a);

三、变量的命名规范

Java语言中,变量命名要符合一定规则。标识符是赋予变量、类或方法的名称。标识符可从一个字母、下划线(_)或美元符号($)开始,随后也可跟数字。标识符是大小写区别对待的并且未规定最大长度。

有效标识符如下:

identifier , userName ,User_name , _sys_varl ,$change

无效标识符如下:

123abc , abc¥5 ,abc ert , add34)

java的变量命名还有很多约定俗成的习惯,虽然你不按照这样的命名习惯也不会出现语法错误,不过为了提高程序的可读性,我们建议你还是使用下面的这几个习惯。

基本数据类型

基本数据类型:

基本数据类型是CPU可以直接进行运算的类型。Java定义了以下几种基本数据类型:

  • 整数类型:byte,short,int,long

  • 浮点数类型:float,double

  • 字符类型:char

  • 布尔类型:boolean

Java定义的这些基本数据类型有什么区别呢?要了解这些区别,我们就必须简单了解一下计算机内存的基本结构。

计算机内存的最小存储单元是字节(byte),一个字节就是一个8位二进制数,即8个bit。它的二进制表示范围从00000000~11111111,换算成十进制是0~255,换算成十六进制是00~ff

内存单元从0开始编号,称为内存地址。每个内存单元可以看作一间房间,内存地址就是门牌号。

 0   1   2   3   4   5   6  ...┌───┬───┬───┬───┬───┬───┬───┐│   │   │   │   │   │   │   │...└───┴───┴───┴───┴───┴───┴───┘

一个字节是1byte,1024字节是1K,1024K是1M,1024M是1G,1024G是1T。一个拥有4T内存的计算机的字节数量就是:

4T = 4 x 1024G   = 4 x 1024 x 1024M   = 4 x 1024 x 1024 x 1024K   = 4 x 1024 x 1024 x 1024 x 1024   = 4398046511104

不同的数据类型占用的字节数不一样。我们看一下Java基本数据类型占用的字节数:

       ┌───┐  byte │   │       └───┘       ┌───┬───┐ short │   │   │       └───┴───┘       ┌───┬───┬───┬───┐   int │   │   │   │   │       └───┴───┴───┴───┘       ┌───┬───┬───┬───┬───┬───┬───┬───┐  long │   │   │   │   │   │   │   │   │       └───┴───┴───┴───┴───┴───┴───┴───┘       ┌───┬───┬───┬───┐ float │   │   │   │   │       └───┴───┴───┴───┘       ┌───┬───┬───┬───┬───┬───┬───┬───┐double │   │   │   │   │   │   │   │   │       └───┴───┴───┴───┴───┴───┴───┴───┘       ┌───┬───┐  char │   │   │       └───┴───┘

byte恰好就是一个字节,而longdouble需要8个字节。

整型

对于整型类型,Java只定义了带符号的整型,因此,最高位的bit表示符号位(0表示正数,1表示负数)。各种整型能表示的最大范围如下:

  • byte:-128 ~ 127

  • short: -32768 ~ 32767

  • int: -2147483648 ~ 2147483647

  • long: -9223372036854775808 ~ 9223372036854775807

我们来看定义整型的例子:

15=0xf0b1111

浮点型

浮点类型的数就是小数,因为小数用科学计数法表示的时候,小数点是可以“浮动”的,如1234.5可以表示成12.345x102,也可以表示成1.2345x103,所以称为浮点数。

下面是定义浮点数的例子:

float f1 = 
float f2 = 
double d = 
double d2 = -
double d3 = 

对于float类型,需要加上f后缀。

浮点数可表示的范围非常大,float类型可最大表示3.4x1038,而double类型可最大表示1.79x10308。

布尔类型

布尔类型boolean只有truefalse两个值,布尔类型总是关系运算的计算结果:

boolean b1 = 
boolean b2 = 
boolean isGreater = 
int age = 
boolean isAdult = age >= 

Java语言对布尔类型的存储并没有做规定,因为理论上存储布尔类型只需要1 bit,但是通常JVM内部会把boolean表示为4字节整数。

字符类型

字符类型char表示一个字符。Java的char类型除了可表示标准的ASCII外,还可以表示一个Unicode字符:


注意char类型使用单引号',且仅有一个字符,要和双引号"的字符串类型区分开。

引用类型

除了上述基本类型的变量,剩下的都是引用类型。例如,引用类型最常用的就是String字符串:

String s = "hello";

引用类型的变量类似于C语言的指针,它内部存储一个“地址”,指向某个对象在内存的位置,后续我们介绍类的概念时会详细讨论。

常量

定义变量的时候,如果加上final修饰符,这个变量就变成了常量:

final 
double r = 
double area = PI * r * r;

常量在定义时进行初始化后就不可再次赋值,再次赋值会导致编译错误。

常量的作用是用有意义的变量名来避免魔术数字(Magic number),例如,不要在代码中到处写3.14,而是定义一个常量。如果将来需要提高计算精度,我们只需要在常量的定义处修改,例如,改成3.1416,而不必在所有地方替换3.14

根据习惯,常量名通常全部大写。

var关键字

有些时候,类型的名字太长,写起来比较麻烦。例如:

new StringBuilder();

这个时候,如果想省略变量类型,可以使用var关键字:

var sb = 

编译器会根据赋值语句自动推断出变量sb的类型是StringBuilder。对编译器来说,语句:

var sb = 

实际上会自动变成:

new StringBuilder();

因此,使用var定义变量,仅仅是少写了变量类型而已。

变量的作用范围

在Java中,多行语句用{ }括起来。很多控制语句,例如条件判断和循环,都以{ }作为它们自身的范围,例如:


只要正确地嵌套这些{ },编译器就能识别出语句块的开始和结束。而在语句块中定义的变量,它有一个作用域,就是从定义处开始,到语句块结束。超出了作用域引用这些变量,编译器会报错。举个例子:

定义变量时,要遵循作用域最小化原则,尽量将变量定义在尽可能小的作用域,并且,不要重复使用变量名。

小结:

Java提供了两种变量类型:基本类型和引用类型

基本类型包括整型,浮点型,布尔型,字符型。

变量可重新赋值,等号是赋值语句,不是数学意义的等号。

常量在初始化后不可重新赋值,使用常量便于理解程序意图。

扫码关注我们更多精彩等待你发现

c++变量重新赋值_Java基础二:一文讲透变量与数据类型相关推荐

  1. c 结构体在声明时赋值_Java基础知识 初识Java 循环结构进阶 数组 数据类型 各种运算符...

    今天给大家带来的是初级Java基础部分的知识:包括初始Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...

  2. py哪个函数可以返回输入的变量类型_[Python基础]二、pycharm,python变量

    2.1 Python简介 Life is short,you need Python (人生苦短,我用Python) 解释器: 将其他语言翻译成机器语言的工具,称为编译器 编译器的翻译方法有两种: 编 ...

  3. c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...

    推荐: 从面试到入职到离职,我在B站工作的30天时光 爱了爱了,Alibaba顶级MySQL调优手册到手,加薪妥了 爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了 本文 ...

  4. java中数组的返回值是什么类型_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...

    一.Arrays jdk中为了便于开发,给开发者提供了Arrays类,其中包含了很多数组的常用操作.例如快速输出.排序.查找等. 1.数组的常用方法 1.数组以字符串形式的输出,2.sort对数组排序 ...

  5. java基本数据类型的标识符_java基础(一)-标识符、变量、基本数据类型及转换、运算符及表达式...

    一.标识符 二.关键字 三.JAVA基础数据类型 3.1.常量 3.2.变量 从本质上来讲,变量其实是内存里面的一小块区域,一个程序在运行的时候,实际上这个程序是位于内存里面,然后才开始运行.一个.e ...

  6. java long 除法运算_java基础知识学习文档二

    一.基本概念 1 对象: 对象是Java类的一个实例,它有状态.属性.行为.如:一个人,具体的某一个人是人类的一个实例.这个人他有名字.性别.年龄等属性,他可以吃饭.说话.走路等行为. 2 类: 类是 ...

  7. java的静态变量怎么赋值_java static变量可以赋值吗?

    java static变量可以赋值吗? 可以赋值的.static的主要作用是静态成员,指该变量的实例在内存中之存放一次.赋值是可以随便改的. java中static关键字 static是java中非常 ...

  8. java什么变量用作英文_Java基础之变量-什么是变量

    什么是变量: 在计算机语言中用来存储计算结果或表示值 如何命名Java变量: 如同酒店会给每个房间起个性化的名字一样,程序中的变量也需要用合理的名字进行管理-变量名! 变量命名要符合以下规则: 首字母 ...

  9. Java成员变量与类变量_Java基础随记2-成员变量和类变量的区别

    由static修饰的变量称为静态变量,其实质上就是一个全局变量.如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰:没有被静态修饰的内容,其实是属于对象的特殊描述. 不同的对象的实例变量将被分 ...

最新文章

  1. 【青少年编程】【四级】绘图程序优化
  2. 语义分割--Not All Pixels Are Equal:Difficulty-Aware Semantic Segmentation via Deep Layer Cascade
  3. WhatFontIs - 字体百科全书,没有不认识的字体
  4. Linux 相关发音
  5. C# 向Main函数传递参数(程序启动时传递参数)
  6. 开源分享 Unity3d客户端与C#分布式服务端游戏框架
  7. Java实现Huffman哈夫曼树(数组实现)
  8. Georgia and Bob(Poj 1704)Nim 博弈
  9. Linux 系统应用编程——网络编程(TCP 协议三次握手过程)
  10. FreeSql (二十八)事务
  11. java中asl_带你认识绕不开的ASLR
  12. sklearn adaboost_集成学习-从零推导和实现adaboost与3D可视化
  13. 关于android 双击事件
  14. 关于推送系统设计的一些总结与思考(三)
  15. Python+OpenCV:直方图均衡化(Histogram Equalization)
  16. Myeclipse打包生成jar文件 A exception has Occured问题解决
  17. 戴尔Latitude5285笔记本触摸板失灵的原因
  18. 可复制的领导力(来自樊登读书会)
  19. 数学建模之差分方程模型详解
  20. zabbix简单安装部署

热门文章

  1. python PyQt5 QtWidgets.QWidget.size()函数 QSize
  2. python os.removedirs() 和shutil.rmtree()(os.removedirs用于删除非空文件夹和子文件夹、shutil.rmtree用于删除文件夹下所有文件夹和文件)
  3. python numpy np.full(shape, fill_value, dtype=None, order='C')函数 以指定数值填充指定形状的数组
  4. 如何将yolo的标注(annotations).txt 坐标转换成tensorflow-yolov3(YunYang1994)的.txt 标注坐标?
  5. PAT甲级题目翻译+答案 AcWing(排序)
  6. 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程
  7. C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt
  8. 监护仪系统都是Linux吗,基于Linux和MiniGUI的心电监护仪设计
  9. c语言万历年系统设计报告,C语言编写单片机万历系统课程设计报告分.doc
  10. 安装mysql Install/Remove of the Service Denied!错误的解决办法