1、变量的定义。

变量与常量相对应,变量是在程序运行过程中它的值允许改变的量,变量可以通过变量名访问。

2、Java中的三大变量

(1)、类变量。又称为静态变量,在类中定义类的属性时,使用static关键字修饰声明一个变量。当对象中出现共享数据时,可以使用静态(static)修饰为类变量,类变量存储在方法区中。

类变量的两种访问方式:

第一种:类名.变量名

第二种:类的实例对象.变量名

多数情况下采用第一种方式。

(2)、成员变量。声明时不用static修饰的变量。只能通过类的实例对象.变量名的方式来访问。成员变量存储于堆内存当中。

注:类变量和成员变量前面都可以加访问修饰符,按照访问权限由大到小,java提供了四种访问权限,分别是public(公有)、protected(保护)、default(默认)、private(私有)。

(3)、局部变量。在类中方法体定义的变量,包含方法的形参,都是局部变量,其作用范围仅限其所在方法体的大括号开始至结束位置。局部变量存储与栈内存当中。

3、变量的定义。

定义格式:数据类型 变量名;//这种方式是等使用再赋值

数据类型 变量名=变量值;//这种方式是在声明的时候就给变量初始化。

例:int x=0,y;

y=x+3;

第一行代码中定义了两个变量x和y,在内存中开辟了两块内存单元,同时为变量x分配了一个初始值0,而变量y没有分配初始值。

第二行代码中,程序先取出变量x 的值,与3进行相加的操作后,将结果赋值给变量y.

4、变量的数据类型。

数据类型大体分为两种:基本数据类型和引用数据类型。

(1)、整数类型变量。用来存储整数数值,即没有小数部分的值。分为4中不同类型:字节型(byte)、短整型(short)、整型(int)、长整型(long)

整数类型变量
类型名 占用空间 取值范围
byte 8位(1个字节) -27~27-1(-128~127)
short 16位(2个字节) -215~215-1(-32768~32767)
int 32位(4个字节) -2的31次方~2的31次方-1
long 64位(8个字节) -2的63次方~2的63次方-1

注意:在为long类型变量赋值时,要在赋值的后面加上一个字母L或小写l,说明赋值类型为long类型。如果赋的值未超出int型的取值范围,加上省略都可以。

(2)、  浮点数类型变量。用来存储小数数值。分为单精度浮点数(float)、双精度浮点数(double浮点型默认),double型所标示的浮点数比float型更为精确。

浮点数类型
类型名 占用空间 取值范围
float 32位(4个字节) 1.4E-45~3.4E+38, -1.4E-45~-3.4E+38
double 64位(8个字节) 4.9E-324~1.7E+308, -4.9E-324~-1.7E+308

注意:在取值范围中,E表示以10为底的指数,E后面的+和-代表正指数和负指数,例如:1.4E-45表示1.4* .10的-45次方

在java中,一个小数会被默认为double类型,所以在为float类型变量赋值时后面一定要加上F或者f,而为double类型赋值时,结尾的D或d可加可省略。

注意:浮点型存在不精确计算的问题,例如:5.0-4.9计算结果为0.09999999999999964,可以使用BigDecimal解决,这里不详细赘述。

(3)、字符类型变量。

字符类型变量用于存储一个单个字符,在java中用char表示。Java中的每个char类型的字符变量都会占用两个字节(也可以用int来表示)。在给char类型变量赋值时,需要用一对英文半角格式的单引号把字符括起来,如’a’,也可以将char类型的变量赋值为0~65535范围内的整数。计算机会自动将这些整数转化为对应的字符,如数值97对应的字符为’a’。

(4)、布尔类型变量。

布尔型变量用来存储布尔型值,在java中用boolean来表示,该类型的变量只有两个值,即true和false。

5、变量的类型转换。

(1)、自动类型转换(隐式转换)。指两种数据类型在转换的过程中不需要显式的进行声明。

要实现自动类型转换,必须满足两个条件:一是两种数据类型彼此兼容,二是目标类型的取值范围大于源类型的取值范围。

例:byte b=3;

int a=b;

将byte类型变量b赋给int类型变量a,由于int类型变量的取值范围大于byte类型变量的取值范围,编译器在赋值过程中不会造成数据丢失,所以编译器能够自动完成这种转换。

三种可实现自动类型转换的情况:

第一种:  整数类型之间可以实现转换,byte类型的数据可以赋值给short、int、long类型的变量。short、char类型可以赋值给int、long类型的变量。int类型的变量可以赋值给long类型的变量。

第二种:整数类型转换为float类型,如byte、short、int、char类型的数据可以赋值给float类型的变量。

第三种:其他类型转换为double类型。如byte、short、int、char、long、float类型的数据可以赋值给double类型的变量。

(2)、强制类型转换(显式转换)。

指两种数据类型在转换的过程中需要显式的进行声明。当两种类型彼此不兼容,或者目标类型的取值范围小于源类型时,自动类型转换无法进行,这时就需要强制类型转换。

转换格式:目标类型 变量名=(目标类型)值;

注意:在对变量进行强制转换时,会发生取值范围大的数据类型向取值范围小的数据类型的转换,如将int类型数转为byte类型,这样极容易造成数据精度的丢失和数据溢出。(double类型是不精确计算的)数据类型转换一般遵循小转大的原则。

转换技巧:表达式类型自动提升:所谓表达式是指由变量和运算符组成的一个算式。变量在表达式中进行运算时,也可能发生自动类型的转换,这就是表达式数据类型的自动提升。

6、变量的作用域。

变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。

Java编程基础-变量的更多相关文章

  1. Java编程基础——常量变量和数据类型

    Java编程基础——常量变量和数据类型 摘要:本文介绍了Java编程语言的常量变量和数据类型. 常量变量 常量的定义 一块内存中的数据存储空间,里面的数据不可以更改. 变量的定义 一块内存中的数据存储 ...

  2. Java入门——(1)Java编程基础

    Java入门--(1)Java编程基础 第二章 Java编程基础   JAVA 代码的基本格式: 修饰符 class 类名{ 程序代码 }   2.1关键字:赋予了特殊含义的单词.   2.2标识符: ...

  3. Java开发知识之Java编程基础

    Java开发知识之Java编程基础 一丶Java的基础语法 每个语言都有自己的语法规范.例如C++ 入口点是main. 我们按照特定格式编写即可. Java也不例外. Java程序的语法规范就是 Ja ...

  4. Java编程基础-面向对象(中)

    本章承接Java编程基础-面向对象(上)一文. 一.static关键字 在java中,定义了一个static关键字,它用于修饰类的成员,如成员变量.成员方法以及代码块等,被static修饰的成员具备一 ...

  5. Java编程基础——数组和二维数组

    Java编程基础——数组和二维数组 摘要:本文主要对数组和二维数组进行简要介绍. 数组 定义 数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器. 数组是一种引用类型,用于保存一组相同类 ...

  6. Java编程基础——流程控制

    Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...

  7. Java编程基础——运算符和进制

    Java编程基础——运算符和进制 摘要:本文主要介绍运算符和进制的基本知识. 说明 分类 Java语言支持如下运算符: ◆ 算术运算符:++,--,+,-,*,/,%. ◆ 赋值运算符:=,+=,-= ...

  8. Java编程基础——标识符和关键字

    Java编程基础——标识符和关键字 摘要:本文主要介绍标识符和关键字. 标识符 是什么 Java语言中,为各种变量.方法.类和包等起的名字,统统称之为Java标识符. 命名规则 ◆ 应以字母.下划线. ...

  9. java编程基础二进制

    0.java编程基础 01.二进制(原码,反码,补码) 02.位运算 03.移位运算符 二进制 原码,反码,补码 1.基本概念 二进制是逢2进位的进位制,0,1是基本算符. 现在的电子计算机技术全部使 ...

随机推荐

  1. BZOJ_1044_[HAOI2008]木棍分割_二分答案+DP+单调队列

    BZOJ_1044_[HAOI2008]木棍分割_二分答案+DP Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个 ...

  2. mtk lk阶段的lcm流程

    一.lk进入kmain() 1. vendor/mediatek/proprietary/bootable/bootloader/lk/arch/arm/srt0.S bl kmain 二.初始化lk ...

  3. 20个Flutter实例视频教程-第12节: 流式布局 模拟添加照片效果

    视频地址: https://www.bilibili.com/video/av39709290/?p=12 博客地址: https://jspang.com/post/flutterDemo.html ...

  4. java8--List转为Map、分组、过滤、求和等操作

    利用java8新特性,可以用简洁高效的代码来实现一些数据处理~ 定义1个Apple对象: public class Apple { private Integer id; private String ...

  5. Android-毛笔的探索与开发

     前言 这篇文章主要是关于移动端毛笔的开发,在平板上有着书写毛笔字贴的效果. 介绍关于毛笔的算法思路. 项目github地址 算法思路分析 曲线拟合算法 利用曲线拟合算法增加虚拟的点,使得笔迹更加光滑 ...

  6. web框架原理,http 协议

    目录 web框架原理 web框架是什么东西 执行代码用浏览器访问一下 输出结果 http 协议 http 协议简介 http 协议概述 http 工作原理 http请求方法 http 状态码 url介 ...

  7. element走过的坑

    1.想要更改表头颜色,只要在el-table里引入 :header-cell-style="{background:'red'}" 2.el-form自定义表单验证 , 但是左边不 ...

  8. perl 打开二进制文件,并拷贝内容

    实现脚本 use strict ; my $fileName = "/Users/chenfool/Desktop/sequoiadb-大数据平台构建.pdf" ; my $out ...

  9. sed 匹配\n换行符

    假设 str="a,b,c,d" echo ${str} | sed "s/,/\n/g" 输出: a b c d echo ${str} | sed &quo ...

  10. Mysql 到 Hbase 数据如何实时同步,强大的 Streamsets 告诉你

    很多情况大数据集群需要获取业务数据,用于分析.通常有两种方式: 业务直接或间接写入的方式 业务的关系型数据库同步到大数据集群的方式 第一种可以是在业务中编写代码,将觉得需要发送的数据发送到消息队列,最 ...