Java基础:变量和数据类型

1.变量

计算机处理数据,变量被用来存储处理的数据,之所以叫做变量因为你可以改变存储的值。更确切的说,一个变量指向着一块存储特定类型值的地址,换句话说,一个变量有名称、类型和值。一个变量有一个名称,例如radius、area、age和height,每个变量的名称都是唯一的,这边可以方便我们设置和获取变量的值。

一个变量有一种类型,下面是Java类型的列子:

  • int: 表示整数例如123和-456
  • double: 表示浮点数例如3.1416、-55.66、1.2e3和-4.5E-6
  • String: 表示文本例如"Hello"、“Good Morning!”,文本通常嵌入在双引号里面
  • char: 表示单个字符例如’a’,‘8’,单个字符通常嵌入在单引号里面。

变量存储特定类型的值,编程中要特别注意变量类型,举例:一个int变量存储整数123,但是不能存储浮点数12.34,同样也不能存储文本"Hello"。
早期的编程语言中引入了类型的概念来解释二进制01数据,类型定义了数据的结构、大小、范围以及针对该类型的一系列操作。

2.名称

需要唯一的标识来命名变量,Java遵循以下标识的命名方式:

  • 标识由大小写字母、数字、下划线和$的任意长度的字符序列组成。
  • 空白 (空格、制表符、换行符)和其他特殊字符 (如+ - * / @ &, 等)是不允许的,错误的命名方式:maxvalue和max-value。
  • 标识符不能以数字(0-9)开头必须以字母(a-z, A-Z)、下划线(_)和 开 头 , 系 统 保 留 以 开头,系 统保留以 开头的标识。
  • 标识符不能使用关键字和预留字段 (例如:clas s,int,double,if,else,for,true,false,null)。
  • 标识符是区分大小写的,rose、Rose和ROSE是3个不同的变量。

使用驼峰给变量命名:theFontSize、roomNumber、xMax、yMin、xTopLeft和thisIsAVeryLongVariableName, 可以参考下面的建议:

  • 选择一个有意义的变量名是非常重要的,建议使用numberOfStudents和numStudents来表示学生人数,而不是n或x。
  • 这些变量名a, b, c, d, i, j, k, i1, j99毫无意义
  • x通常用作异常,y、z用来表示坐标,i表示循环索引。
  • 对单复数变量加以区分,row表示单行,rows表示多行。

3.定义变量

需要定义变量的名称和类型才能在程序中使用变量,你可以使用下面的其中一种语法:

// 定义特定类型的变量, type identifier
int option;
 
// 定义多个同类型变量,变量之间用逗号分在这里插入代码片隔,type identifier1, identifier2, ..., identifierN
double sum, difference, product, quotient;
 
// 定义变量并初始化, type identifier = initialValue
int magicNumber = 88;
 
// 定义多个同类型变量并初始化, type identifier1 = initValue1, ..., identifierN = initValueN
String greetingMsg = "Hi!", quitMsg = "Bye!";

注意:

  • Java是强类型的语言,一个变量对应着一种类型,变量声明后不能存储其它类型的数据。
  • 每个变量只能声明一次。
  • 使用前你可以在程序的任意位置进行声明。
  • 变量声明之后它的类型不能更改。
  • 一个变量声明的语句以类型开始,变量自始自终都为这种类型服务,一个变量声明的语句只能使用单一的类型。

4.常量

常量的命名规范:使用大写的单词,多个单词使用下划线连接,例如:MIN_VALUE,MAX_SIZE。
常量是不可变的,使用关键字final进行声明,常量声明后需要初始化

final double PI = 3.1415926;

5.表达式

表达式是由运算符和操作数组合而成,通过计算可以输出单个类型的值,例如

1 + 2 * 3                        // 计算得到7
 
int sum, number;
sum + number                     // 计算得到一个int值
 
double principal, interestRate;
principal * (1 + interestRate)   // 计算得到一个double值   

6.赋值

指派一个右操作数赋值给左操作数,例如:x=1。
计算表达式的值并赋值给左操作数,例如:x=(y + z) / 2。

赋值语句的语法:

// 直接赋值, variable = literalValue
number = 88;
 
// 计算表达式之后赋值, variable = expression
number = number + 1;  // 计算表达式number+1,最后将结果赋值给number
 
8 = number;           // 错误的使用
number + 1 = sum;     // 错误的使用

7.基本类型

在Java中有两种类型:基本类型 (int、double等)和引用类型 (类和数组)。

  • byte: 8位有符号整型取值范围:[-2^7, 2^7-1] = [-128, 127]。
  • short: 16位有符号整型取值范围:[-2^15, 2^15-1] = [-32768, 32767]。
  • int: 32位有符号整型取值范围:[-2^31, 2^31-1] = [-2147483648, 2147483647] (≈9
    digits)。
  • long: 64位有符号整型取值范围:[-2^63, 2^63-1] = [-9223372036854775808,
    +9223372036854775807] (≈19 digits)。
  • float: 32位单精度浮点数(≈6-7位小数, 取值范围:±[≈10^-45, ≈10^38])。
  • double: 64位双精度浮点数(≈精确到14-15位小树, 取值范围:±[≈10^-324, ≈10^308])。
  • char: 表示16位Unicode编码,取值范围:’\u0000’ 到 ‘\uFFFF’, 可以理解成16位无符号整型,取值范围:[0,
    65535]。
  • boolean: 布尔取值只能是true或false,布尔数据类型的大小在Java虽然没有定义, 但是至少需要1比特。

内建的基本类型
在这里插入图片描述
基本类型内建在程序语言中,从上面的图中我们可以看出Java有8种基本类型。

  • 有4种有符号的整型:8位byte,16位short,32位int,64位long。
  • 32位单精度类型float,float近似的取值范围±1.40239846×10-45到±3.40282347×1038。
  • 64位双精度类型double, double近似的取值范围
  • ±4.94065645841246544×10-324到±1.79769313486231570×10308。
  • char表示单个字符,例如’0’, ‘A’,
    ‘a’,在Java中,char采用16位Unicode(UCS-2格式)来支持国际化(i18n)。
  • Java中引入了二进制的布尔类型,它只能包含true和false两个值。

例子:下面的程序用来输出打印基本类型的最大值、最小值和比特长度。

/*
 * 输出基本类型的最大值、最小值和比特长度
 */
public class PrimitiveTypesMinMax {
   public static void main(String[] args) {
      // int (32位有符号整型)
      System.out.println("int(min) = " + Integer.MIN_VALUE);
      System.out.println("int(max) = " + Integer.MAX_VALUE);
      System.out.println("int(bit-length) = " + Integer.SIZE);
      // byte (8位有符号整型)
      System.out.println("byte(min) = " + Byte.MIN_VALUE);
      System.out.println("byte(max) = " + Byte.MAX_VALUE);
      System.out.println("byte(bit-length)=" + Byte.SIZE);
      // short (16位有符号整型)
      System.out.println("short(min) = " + Short.MIN_VALUE);
      System.out.println("short(max) = " + Short.MAX_VALUE);
      System.out.println("short(bit-length) = " + Short.SIZE);
      // long (64位有符号整型)
      System.out.println("long(min) = " + Long.MIN_VALUE);
      System.out.println("long(max) = " + Long.MAX_VALUE);
      System.out.println("long(bit-length) = " + Long.SIZE);
      // char (16位字符或者16位无符号整型)
      System.out.println("char(min) = " + (int)Character.MIN_VALUE);
      System.out.println("char(max) = " + (int)Character.MAX_VALUE);
      System.out.println("char(bit-length) = " + Character.SIZE);
      // float (32位浮点数)
      System.out.println("float(min) = " + Float.MIN_VALUE);
      System.out.println("float(max) = " + Float.MAX_VALUE);
      System.out.println("float(bit-length) = " + Float.SIZE);
      // double (64位浮点数)
      System.out.println("double(min) = " + Double.MIN_VALUE);
      System.out.println("double(max) = " + Double.MAX_VALUE);
      System.out.println("double(bit-length) = " + Double.SIZE);
   }
}
 
int(min) = -2147483648
int(max) = 2147483647
int(bit-length) = 32
 
byte(min) = -128
byte(max) = 127
byte(bit-length)=8
 
short(min) = -32768
short(max) = 32767
short(bit-length) = 16
 
long(min) = -9223372036854775808
long(max) = 9223372036854775807
long(bit-length) = 64
 
char(min) = 0
char(max) = 65535
char(bit-length) = 16
 
float(min) = 1.4E-45
float(max) = 3.4028235E38
float(bit-length) = 32

double(min) = 4.9E-324
double(max) = 1.7976931348623157E308
double(bit-length) = 64

String不是基本类型,是另外一种常用的类型,它表示文本内容,在Java中字符串使用双引号。

String message = "Hello, world!"; // 字符串使用双引号
char gender = 'm';                // 字符使用单引号

为变量选择数据类型

开发中需要设计合适的变量类型,多数时我们不难选择,你可以用int来存储整型,用float来存储有小数的数值,用String来存储文本,用char来存储单个字符和用boolean来存储二元结果。

经验法则

  • 由于int类型非常精确、运行效率高,因此常被用作计数和索引。
  • 尽可能的使用int类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值