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. 关于SelectObject之后是否要恢复之前的GDI对象

    以下列代码为例 { // 创建内存DC CDC mMemDc; mMemDc.CreateCompatibleDC( &dc ); // 创建兼容位图 CBitmap bmpMemBmp; b ...

  2. Jmeter 在什么情况下定义多个thread group?

    Jmeter里面有三种线程组:setUp thread group, TearDown thread group, thread group. 如果想定义100个用户登录系统,60个用户做A操作,40 ...

  3. AutoIt:如何处理应用程序端口被占用的情况

    为公司的部署工程师书写了一个autoIt应用程序,现在遇到下面的一种情况: 产品分服务器端和客户端,启动的时候,会启用1785端口,然后彼此通信: 现在我的autoIt应用程序需要做的事情是: 如果1 ...

  4. CS231n 2016 通关 第四章-NN 作业

    cell 1 显示设置初始化 # A bit of setup import numpy as np import matplotlib.pyplot as plt from cs231n.class ...

  5. c# aop讲解

    先说下场景,C#中为什么要使用Aop,而我又是在哪里使用Aop? 本人只是想拦截实体类的Set的方法,然后在Set之前,调用一下其它方法,把值赋给另一个对象. 而我做的都是在实体类的基类里处理: 比如 ...

  6. 如何使用最简单的方法将一个已经存在的工程中使用 cocaPodfile

    在网上搜索的使用 cocaPods 安装一些优秀的框架,搜索的博客大多步骤都是非常的麻烦,这里的方法非常的简单,本篇仅仅作为以后备用.   第一步:首先找到我们的工程,在终端中输入 cd 拖入已经存在 ...

  7. XML DOM 笔记

    一.概念理解: 关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别. Node(节点)是DOM层次结构中的任何类型 ...

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

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

  9. 洛谷 - P5429 - Fence Planning - 并查集

    https://www.luogu.org/problemnew/show/P5429 很明显是要维护整个连通块的共同性质,并查集一搞就完事了. #include<bits/stdc++.h&g ...

  10. U3D手游《苍穹变》性能优化经验谈

    4月11日,由unity公司举办的Unite 2016大会在上海正式举行,在4月12日的案例分享专场会议上,天神互动U3D高级开发工程师康凯以手游<苍穹变>为例讲述了3DMMOARPG游戏 ...