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、变量的作用域。

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

转载于:https://www.cnblogs.com/stsinghua/p/6418552.html

Java编程基础-变量相关推荐

  1. Java大神推荐,java编程基础必备(必看)

    在没有以前的操作习惯的错误情况下,反而容易接受新知识,所以不要因为自己对java一无所知而自卑,相反,这是菜鸟们的优势,但是如何才能从一个菜鸟历练成大神呢,当然是需要学习了,不学习就想成为大神,就是在 ...

  2. 第二章java编程基础测试题_Java编程基础测试题分享

    单选题:(每道题目2分) 1. 下列哪个声明是错误的?(B) A. int i=10; B. float f=1.1; //float f=1.1f C. double d=34.4; D. byte ...

  3. java编程一般类抽象类的定义,Java编程基础抽象类

    本文主要是讲述Java编程基础-抽象类,更多Java技术知识,请登陆疯狂软件教育官网. 抽象类: 抽象:不具体,看不明白关键字abstract 抽象类的特点: 1.抽象方法只能定义在抽象类中,抽象类和 ...

  4. 《Java程序员面试秘笈》—— 第1章 Java编程基础

    本节书摘来异步社区<Java程序员面试秘笈>一书中的第1章,作者:常建功,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 Java编程基础 通过考察Jav ...

  5. Java实验01 Java编程基础(猜数字游戏、随机点名器)

    实验一 Java编程基础 实验1-1 随机点名器 一.实验描述 1. 任务描述 编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字.随机点名器具备3个功能,包括存储全班同学姓名.总览 ...

  6. Java编程基础(入门)

    Java编程基础 Java概述 Java是一种功能强大的面向对象的编程语言,它不仅吸收了C++语言的各种优点,还摈弃了C++中难以理解的多继承.指针等概念 Java开发环境搭建: 详情见:JDK和Ec ...

  7. java中的常用名词,Java编程基础常见英语词汇

    Java编程基础常见英语词汇 Java编程基础中常见英语的词汇有哪些呢?这些都是学Java编程需要运用到的,下面内容由小编为大家介绍Java编程基础常见英语词汇,供大家参考! Java编程基础常见英语 ...

  8. 进击 !!第二章 JAVA编程基础

    第二章 JAVA编程基础 目标: 掌握java的基本语法,常量,变量,流程控制语句,方法以及数组 运用java运算符的使用 了解java代码的基本格式 2.1java 的基本语法 1. 代码的基本格式 ...

  9. 《21天学通Java(第7版)》—— 第2章 Java编程基础 2.1 语句和表达式

    本节书摘来异步社区<21天学通Java(第7版)>一书中的第2章,第2.1节,作者: [美]Rogers Cadenhead(罗格斯 卡登海德),更多章节内容可以访问云栖社区"异 ...

最新文章

  1. Bugku-CTF之前女友(SKCTF)
  2. Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
  3. vector iterator not incrementable 的问题
  4. Bloom Filter(布隆过滤器)的概念和原理
  5. 去哪儿网查不到历史订单_去哪儿网 数据清洗
  6. 多个 小程序_最简单的小程序制作方法,不会代码也能撸一个
  7. Android学习笔记19-ImageView实现图片适屏与裁剪
  8. Linux系统配置及服务管理_第03章用户管理
  9. 使用Redis实现高并发分布式序列号生成服务
  10. layui + tp5分页(非数据表格渲染形式)
  11. 组织行为学笔记-第一章
  12. PDFbox-PDF解析(坐标定位,分页读取)
  13. 计算机应用B是什么,《计算机应用基础》b
  14. 设置了相对定位relative之后,改变top值,如何去掉多余空白?
  15. appstore上架助手
  16. 0成本开发一个外卖领劵小程序
  17. IntelliJ IDEA 自动消除行尾空格
  18. 使用windows远程桌面连接复制拷贝远程电脑上文件到本地的方法
  19. 后疫情时代,“马太效应”将影响更多人
  20. AndroidStudio插件开发(进阶篇之Editor)

热门文章

  1. 从Java代码到Java堆理解和优化您的应用程序的内存使用
  2. Android5.0新特性:主题样式
  3. 做好平面设计,你要知道的几个创造性思维?
  4. nodejs安装及环境配置_nodeJS安装和环境变量的配置
  5. gitee合并分支_使用Gitee进行协作翻译的简单介绍
  6. linux给所有主机发送公钥,发送公钥到多台远程主机
  7. anaconda新建不同python版本环境_解决 Anaconda 与 ROS 冲突(python 版本与 opencv)
  8. burpsuit拦截不了_burpsuite无法拦截本地流量
  9. json mysql 字段 默认值_MySQL中的JSON类型
  10. Windows Server 2008服务器管理新技巧6则第1/4页