欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

变量和数据类型

程序员文章站 2022-05-28 14:29:52
...

一.什么是变量?

一个数据存储空间的表示

二.变量的表示

1)变量名

2)变量类型

3)变量值

三.变量的命名规则

1)组成:由字母、数字、下划线“_”、美元符“$”组成

2)不能以数字开头

3)不能是关键字,不能是true/false(布尔值),null之类

4)严格区分大小写,长度不限,坚持见名知意的原则

5)驼峰命名法

四.什么是标识符

凡是可以由自己命名的地方都可以成为标识符

五.什么是关键字

具有特殊意义的词,称之为关键字,如public、static、class

六.九个数据类型


1.八个基本数据类型
1)byte
一个byte类型整数在内存里占8位,范围是-128(-27)~127(27-1)

2)short(不常用)
一个short类型整数在内存里占16位,范围是-32768(-215)~32767(215-1)

3)int
一个int类型整数在内存里占32位,范围是-2147483648(-231)~2147483647(231-1)
最常用的整数类型,整数值默认int类型

4)long
一个long类型整数在内存里占32位,范围是(-263)~(263-1)

5)float(不常用)
单精度浮点数,一个float类型浮点数在内存里占4字节、32位,范围是
1.4E-45(即1.4*10-45) ~ 3.4E+38
定义float类型的变量,必须在数值后面加"f"或"F"
不能精确表示

6)double
双精度浮点数,一个double类型浮点数在内存里占8字节、64位,范围是
4.9E-324 ~ 1.7E+308
浮点类型默认是double类型
不能精确表示,因此无法直接比较两个double类型变量的大小

	for (int i = 1; i < 20; i++) {
			System.out.println(0.369+3.145);
			//运行会发现结果不是3.514
		}


7)char
表示单个字符,定义时必须用单引号括起来

char a = '男';

使用16位Unicode字符集作为编码方式,范围是\u0000(即为 0)~\uffff(即为 65535)

8)boolean
Boolean类型的数值只能是true或false,其他基本数据类型也不能转换成Boolean类型

	static byte a;
	static int b;
	static short c;
	static long d;
	static float e;
	static double f;
	static char g;
	static boolean h;
	static String i;

	public static void main(String[] args) {
		float ab = 2.0F;		
		System.out.println(ab); // 定义float类型的变量,须在数值后面加"f"或"F"
		System.out.println(a); // byte数据类型的默认值为0
		System.out.println(b); // int数据类型的默认值为0
		System.out.println(c); // short数据类型的默认值为0
		System.out.println(d); // long数据类型的默认值为0
		System.out.println(e); // float数据类型的默认值为0.0
		System.out.println(f); // double数据类型的默认值为0.0
		System.out.println(g); // char数据类型的默认值为空
		System.out.println(h); // boolean数据类型的默认值为false
		System.out.println(i); // String数据类型的默认值为null
	}


2.一个引用数据类型

String类型

定义时须用双引号括起来

String a ="床前明月光,疑是地上霜";

七.常量


语法:

final 数类型 变量名 = 变量值;
 final double MATH_PI = 3.14;

注意:
1)常量名通常大写
2)不同分词使用下划线分隔
3)只能被赋值一次,通常定义时即对其初始化

八.数据类型的类型转换

1.自动类型转换
低精度向高精度会自动转换

   低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double

满足自动类型转换的条件:
1)两种类型要兼容
2)数值类型(整型和浮点型)互相兼容
3)目标类型大于源类型:

int before = 5;
double raise = 3.14;
double now = before + raise;	//自动类型转换	int——》double
System.out.println(now);


2.强制类型转换
高精度向低精度需要强转,只保留整数位,精度自动舍弃
强制类型转换时用小括号括起来

	int before = 20;
    double rise = 9.8;
    int now = (int)(before + rise);

九.运算符

1.赋值运算符
语法:

变量类型  变量名 = 表达式;
int sum = num1 + num2;

2.算数运算符
加+  减-  乘*  除/ (相当于除法当中的商) 求余% (相当于除法当中的余数)
加加++ 减减–:
写在变量前:先变量值加减,后使用变量值
写在变量后:先使用变量值,后变量值加减

复合运算符:
+=  -=  *=  /=  %=

num += 2; --> num = num + 2;

是单个运算符,当数据类型不匹配时不能转换

	short a = 4;
	a += 5; // 编译通过
	a = a + 4; // 编译不通过,类型不匹配

3.关系运算符
==  等于      判断是否相等
!=  不等于    判断不相等
>  大于      判断大于
<  小于      判断小于
>=  大于等于  判断大于等于
<=  小于等于  判断小于等于

注意:> 、< 、>= 、<= 只适用于数值类型判断

4.逻辑运算符
1)短路与:&&  所有表达式都为true,整个表达式才为true,第一个表达式为false,不看第二个表达式
2)短路或:||  有一个表达式为true,整个表达式就为true,第一个表达式为true,不看第二个表达式
3)非:!  取反,表达式为true,则为false
4)不短路与:&  所有表达式都为true,整个表达式才为true,第一个表达式为false,继续后面的表达式
5)不短路非:|  有一个表达式为true,整个表达式就为true,第一个表达式为true,继续后面的表达式
6)异或:^ 两个表达式结果不同时返回true,结果相同时返回false

5.三元(三目)运算符
语法:

条件表达式 ? 表达式1 :表达式2;

条件表达式为true,结果为表达式1的值,否则为表达式2的值
表达式1或者2的类型必须跟定义变量类型一致

6.运算符的优先级

1)优先级别最低的是赋值运算符
2)可以通过()控制表达式的运算顺序,()优先级最高
3)算术运算符 > 关系运算符 > 逻辑运算符

灵活用法:当不确定优先级的时候,优先选择使用小括号()