004变量、数据类型、运算符(java基础)

目录

一、变量的定义和作用域

二、数据类型

1、整数型

2、浮点类型

3、字符型

4、布尔型

5、AScii码和Unicode码

6、String类

7、基本数据类型转化

8、强制类型转换

9、自动装箱、拆箱

10、基本数据类型和String类型互相转换

三、运算符

1、位运算符

2、算术运算符

3、赋值运算符

4、比较运算符

5、逻辑运算符

 6、三元运算符


一、变量的定义和作用域

定义格式:数据类型 变量名
作用域:一对{ }之间有效 
注:使用前需要初始化值

二、数据类型

分为引用数据类型和基本数据类型

引用数据类型类(包括字符串String)
接口
数组
类型符号所占字节数据范围
基本数据类型(8种)数值型整数byte1-128~127(-2^7~2^7-1)
short2 -2^15~2^15-1
int4 -2^31~2^31-1
long8 -2^63~2^63-1
浮点数float4-3.403E38~3.403E38
double8 -1.798E308~- 4.9E324
字符型char2
布尔型boolean1 true false(java中不能以0或非0代替)

下面详细介绍8种基本数据类型

1、整数型

byte、short、int、long,它们分别占1、2、4、8个字节,1个字节为8位

java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’

2、浮点类型

float、double

Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’
浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2

3、字符型

char类型是可以进行运算的。因为它都对应有Unicode码。
在用于计算的时候会自动转化为int类型。
Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符

4、布尔型

boolean类型数据只允许取值true和false,无null。默认初值是false
不可以0或非 0 的整数替代false和true,这点和C语言不同。

5、AScii码和Unicode码
 

Ascii码是计算机发明的时候为了在计算机中表示字符,人们制定的一种编码。Ascii由一个字节中的7位bit位表示,范围是0x00-0x7F共128个字符,比如空格"SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001)

扩展ASCII,后来基于ascii表扩展的,共256个字符,比如说法语德语类的语言,有特殊字母。

UNICODE,再后来为了把全世界人民所有的文字符号都统一进行编码,于是制定了UNICODE标准字符集。Unicode 只是一个符号集,它只规定了符号的二进制代码,UNICODE使用两个字节表示一个字符。UNICODE的范围是0x0000-0xFFFF共6万多个字符,其中光是汉字就占用了四万多个。
UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。

6、String类

String类属于引用类型,可用null赋值。
String对象创建出来就不可能被改变,每次复制都需要创建新的对象

7、基本数据类型转化

自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为

①有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
②byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
③当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。byte和short涉及到赋值都会转换,但是特殊运送不会

8、强制类型转换

①自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符,例如(int),但可能造成精度降低或溢出,格外要注意。
②通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
如: String a = “43”; int i = Integer.parseInt(a);
boolean类型不可以转换为其它的基本数据类型。

char、byte、short之间不相互转换,涉及到运算转换成int,转成int不会自动转回来

9、自动装箱、拆箱

因为基本数据类型无法进行对象化处理,所以引入了包装类,8种基本数据类型都有对应的包装类,包装类提供了一些属性和方法,Java中数值型包装类都是继承自Number类,都是用final修饰的,不可以继承

装箱就是自动将基本数据转换成包装类型

拆箱就是 自动将包装器类型转换为基本数据类型。

  //自动装箱
  Integer b = a;//相当于 Integer b = Integer.valueOf(a);
  //自动拆箱
  int c = b;//相当于 int c = b.intValue();

如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象

        Integer i = 12;
		Integer j = 12;
		System.out.println("============0=========");
		System.out.println(i==j);
		
		Integer ii = 129;
		Integer jj = 129;
		System.out.println("============1=========");
		System.out.println(ii==jj);
		
		Integer iii = new Integer(12);
		Integer jjj = new Integer(12);	
		System.out.println("============2=========");
		System.out.println(iii==jjj);
		
		int aa = 12;
		Integer bb = new Integer(12);
		System.out.println("============3=========");
		System.out.println(aa==bb);
		
		Integer dd = new Integer(129);
		int cc = 129;
		System.out.println("============4=========");
		System.out.println(dd==cc);

输出结果是

============0=========
true
============1=========
false
============2=========
false
============3=========
true

============4=========
true

0是自动装箱,会发生Integer i = Integer.valueOf(12),因为两个12都存在常量池中,都直接从常量池里面取相同的12,不会重复创建对象,所以是true

1是false,也是自动装箱,但是因为>127,所以不在常量池里拿,而是在堆上new新的Integer对象

2是false不用说了,堆上创建了两个新对象

3是true,一个是基本类型一个包装类型,他们相比较,身为包装类型的bb会发生自动拆箱的过程。即调用intValue()方法返回一个int类型,基本类型就是只比较数值,所以输出true

4同3,只是故意不取-128到127之间的数据来说明跟2不一样

10、基本数据类型和String类型互相转换

(1)基本数据类型转换成String

  • 基本类型数据的值+"" 最简单的方式(工作中常用)
  • 使用包装类中的静态方法 static String toString(int i)返回-一个表示指定整数的String 对象。
  • .使用String类中的静态方法 static String value0f(int i) 返回int 参数的字符串表示形式。

(2)String转换成基本数据类型

  • 使用包装类的静态方法XX.parseXX( "字符串") ,eg: Integer.parseInt("123")
  • 使用包装类的静态方法valueOf( "字符串"),eg:Double.valueOf("123")

三、运算符

①位运算符
②算术运算符
③赋值运算符
④比较运算符(关系运算符)
⑤逻辑运算符
⑥三元运算符

1、位运算符

<<、>>、>>>、&、|、^、~

2、算术运算符

注:i++的效率比i=i+1高

字符串也可使用+

 “+”除字符串相加功能外,还能把非字符串转换成字符串,比如:

 System.out.println("5+5="+5+5);

打印结果是:

5+5=55

但是如果数值在前面,则先进行算术运算,再拼接字符串,比如

System.out.println(5+5+"=10");

打印结果是:

10=10

3、赋值运算符

=

4、比较运算符

5、逻辑运算符

(1)异或^

a^b:不同为true,相同为false

(2) “&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

 6、三元运算符

(条件表达式)?表达式1:表达式2

条件表达式为true的时候,执行表达式1,为false则执行表达式2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值