数据类型与运算符

变量

  1. 在类、接口、枚举中声明的变量被称为成员变量 成员变量又分为两类:
    • 类变量(静态变量):被static关键字修饰的变量。
    • 实例变量(非静态变量):未被static关键字修饰的变量。
static int n1 = 100;(类变量)
int n2 = 128;(实例变量)
  1. 方法内部声明的变量和方法的形式参数变量都被称为局部变量(本地变量)
    • 局部变量的声明与赋值可以分为两步:
int x;// 声明
x = 256;// 初始化
System.out.println("x = " + x);
  • 推荐的代码写法: 变量的声明和初始化可以一步完成
int y = 512;
  • 同时声明多个变量,并赋相同值
int i1, i2, i3;
i1 = i2 = i3 = 10;
  1. 在声明的数据类型前加入final关键字,就会声明一个常量
  • 常量:
    • 只能为其赋值一次的内存空间,即初始化后,值不可再被修改
    • 如果试图在被初始化后的常量上进行值的修改,则不允许程序通过编译
    • 如果能确定一个变量的值在日后不会改变,则应该将其声明为final的
    • 局部变量和常量在第一次使用前必须进行初始化,否则不能通过编译
  1. Java 10引入的局部变量类型自动推断(var)
  • ava的编译器在编译源代码时会通过值对变量的类型进行自动的推断
    • ava的编译器在编译源代码时会通过值对变量的类型进行自动的推断
    • 虽然使用var关键字声明变量看上去有点像Javascript中声明变量的语法,但Java依旧是强类型的语言,一旦变量的类型被推断出,则不能再对类型进行改。如:age = true;
    • 如果使用var来声明变量,则必须在声明的同时为其进行初始化,否则无法通过编译。因为此变量的类型要通过初始化的具体值来判定。
  1. 关于赋值运算
  • 用字面量进行变量的赋值
int a = 100;
boolean b = false;
double c = 56.388283;
  • 把表达式的运算结果赋值给变量
int sum1 = a + 100;
System.out.println("sum1 = " + sum1);

(赋值运算从右向左)

  • 把调用方法返回的结果赋值给变量
int x = 1000;
int y = 3568;
int z = Math.max(x, y);
System.out.println("z = " + z);

int i = Math.max(a * x, y * 2);
System.out.println("i = " + i);
  • 取x的当前值并除以2,然后将结果再赋值给x。
x = x / 2;
System.out.println("x = " + x);
  1. 布尔类型字面量只有true和false两种取值
boolean b1 = false;
boolean b2 = true;
  • 与C语言不同,true和false不能被转换为数值类型
  1. 浮点数据类型
  • 浮点数据类型字面量,默认类型为double.若想使用float类型的字面量,需在其后加F或f后缀
float f1 = 0.5F;
float f2 = .5F;
float f3 = 5.F;
float f4 = 1.3282e+8F;// 1.3282 * 10的8次方
float f5 = 1.3282e-5F;// 1.3282 * 10的-5次方
float f6 = -1.3282e-5F;// -1.3282 * 10的-5次方

//double类型也有后缀
double d1 = 0.8;
double d2 = 5.323D;
double d3 = 5.323d;
  • double字面量也可以使用科学计数法表示
System.out.println(0.8 + 0.3);// 1.1
  • 摄入误差
System.out.println(0.8 + 0.4);// 1.2000000000000002
  1. long数据类型
  • 8进制字面量:以0开头,后边跟数字0~7,但8进制不常用
System.out.println("010: "+ 010);
System.out.println("021: "+ 021);
  • 16进制字面量:以0x或0X开头,后边跟09af(10~15)
System.out.println("0x10: "+0x10);
System.out.println("0x32: "+0x32);
System.out.println("0x2e: "+0x2e);
  • 从Java 7开始,引入了2进制字面量.2进制字面量:以0b或0B开头,后边跟数字0和1
System.out.println("0b100011101: "+0b100011101);
System.out.println("0b1010: "+0b1010);
  • 从Java 7开始,可以在数字中加入_作为分隔符(注意:不可加在数字的开始和结束位置,也不可以加在小数点两侧。 是为阅读程序方便而加入的,在程序被编译后,所有会被丢弃)
System.out.println("0b1000_1111_0101: "+0b1000_1111_0101);

错误书写格式:

long num1 = long num1 = 28_349_558_923_458L;
// long num2 = _28_349_558_923_458L;
// long num3 = 28_349_558_923_458_L;

注:整数类型数据在代码中会默认为int类型数据,因此在编写long类型数据是应在数字后加上大写字母L

double num4 = 288_223.389_283;
// double num5 = 288_223_.389_283;
// double num6 = 288_223._389_283;

正确书写格式

  1. char数据类型
  • 字符类型字面量表示Unicode字符集中的单个字符,使用一对单引号进行界定
  • 字符类型是int类型的子集,范围在[0, 65535]区间内。字符型可以转换为int类型,int类型中的0~65535可以转换为char类型
  • char与int之间的关系即字符与字符编码之间的关系如:a:97 A:65
  • char类型数据不能用单引号引单个字符或说引号引单个字符
// char c2 = 'abc';(错误)
// char c3 = "a";(错误)
  1. 转义符
  • char x = '\n';// 换行*
    x = '\r';// 回车*
    x = '\b';// 退格
    x = '\t';// 水平制表(Tab)*
    x = '\f';// 换页
    x = ''';// 单引号*
    x = '"';// 双引号*
    x = '\';// 反斜线*
    x = '\101';
    // 3位8进制数字,表示000377(0255),对应西欧字符集(ISO-8859_1)
    x = '\u4e00';// 以反斜线加u开头,后跟4位16进制数,可以表示全部Unicode字符集中的字符
  • 字符型字面量用单引号,字符串字面量用双引号,在程序中字符串字面量比字符字面量更常用,字符类型的转义符也可以使用在字符串中。
String str = "This's an apple.\n\tThat\'s an \"orange\".";
System.out.println("str = " + str);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。