Java基础之类型与运算
1、常量:故名思意,就是在整个程序中不会改变的量值
注意:boolean类型也是常量,它只有两个值(true,false)。
2、变量:用来存储数据的存储空间,它没有固定的值,可以重复使用,用来存储一某一类常量。当变量确定了数据类型时,它就只能存储这一个类型的常量。
特点:1、在内存中有自己的一片存储空间
2、可以重复使用
3、有自己特有的名称(变量名)和数据类型
4、没有固定的数据,可以不断改变
定义变量:(格式都是固定的)
第一种方法:
数据类型变量名;
变量名=数值;
第二种方法:(推荐)
数据类型变量名=数值;
注意:为了提高代码的可阅读性,要避免多个变量一起定义
分类:全局变量和局部变量
全局变量:(成员变量)定义在方法体之外,类体之内的变量
局部变量:除去全局变量,都是局部变量
变量作用域:
1、指变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就确定了:
2、作用域是定义开始到定义所在结构体结束就不再有作用了(final,static定义的变量除外)
3、当方法体中定义的变量(局部变量)与它所在的类中定义的变量(成员变量)(方法体外)名称相同时,方法中调用这个变量,会覆盖掉成员变量选择调用局部变量。
4、Main方法中无法调用他所在的类的非静态方法。
变量的使用规则:
1、 应该在使用变量之前定义变量
System.out.println("d="+d);
int d = 3;
VarDemo.java:33:错误:找不到符号
System.out.println("d="+d);
已经存在这个变量
int b = 3;
int b = 3;
VarDemo.java:40:错误:已在方法main(String[])中定义了变量b
必须声明变量数据类型才可以使用变量
d = 23; VarDemo.java:48:错误:找不到符号
2、数据类型:
可以分为基本数据类型(原生数据类型)和引用数据类型(对象数据类型)
基本数据类型有八种可分为:
整数型:byte(1个字节)、short(2个字节)、int(4个字节)、long(8个字节)
浮点型:float(4个字节)、double(8个字节)
布尔类型(常数):boolean(1位)(true,false)
字符型:char(2个字节)
最常用的引用数据类型:(String)
字符串类型的数据与任意的数据相加最终的数据类型一定是字符串数据类型
System.out.println(12+23+"努力学好");
//结果为:35努力学好
System.out.println(12+"我要学好JAVA"+34);
//结果为:12我要学好JAVA34
String str = 23+"我要学好JAVA";
str = (String)12 + "我要学好JAVA";
不可以强制转换为String类型
//StringDemo.java:15:错误:不可转换的类型
4、基本数据类型转换
1、自动数据类型转换(boolean不参与数据类型转换,因为它不是数值类型)
将范围小的数据类型转换成范围大的数据类型
注意:byte、char、short之间是不可以转换的并且在定义他们是系统会
自动的对他们进行强制转换(在没有溢出的范围之内)
2、强制数据类型转换
格式:范围小的变量=(范围小变量对应的数据类型)范围大的变量;
将范围大的数据类型强制转换成范围小的数据类型
注意此过程可能会是数据的精度有所降低或者出现溢出的现象
3、表达式类型的自动提升
在表达式中计算时所有的byte、short、char变量都会自动提升为int型的。
两个变量在表达式中做运算是,如果两个变量的数据类型不一样,那么表达式就会自动提升那个范围小的变量,使它与那个范围大的变量范围相同也就是说提升到相同的数据类型且为那个范围大变量的数据类型。
范围大小如下:byte、short、char-->int -->long --> float --> double
5、运算符
++和--
++在前是先对右边的表达式进行处理然后再将值赋给左边的变量
++在后是先对右边的表达式进行处理然后再将处理之前的数值赋值给变量
--同理
如题:
int sum = 4;
sum = sum++;
System.out.println(sum); //输出结果为:4
sum = ++sum;
System.out.println(sum);//输出结果为: 5
sum++;
System.out.println(sum);//输出结果为: 6
++sum;
System.out.println(sum);//输出结果为: 7
int a = sum++;
System.out.println(a);//输出结果为: 7
System.out.println(sum);//输出结果为: 8
a = ++sum;
System.out.println(a);//输出结果为: 9
System.out.println(sum);//输出结果为: 9
6、赋值运算符 (推荐单一赋值,不推荐多个变量一起赋值)
例如:
int sum = 3;
sum +=4;//等价于sum = sum + 3;
System.out.println(sum);//结果为:7
7、比较运算符
用于比较两个变量或常量之间的关系,比较运算符的结果是boolean类型,其操作格式为:
boolean result =表达式A比较运算符 表达式B;
==:等于,若比较的是两个操作数都是数值类型,即使他们的类型不同,只要值相同就返回true。
8、三目运算符
格式:比较运算的表达式?返回结果1:返回结果2
首先先判定表达式的真假,如果为真返回结果1否则返回结果2
例:int e = 4<5?4:5; //利用三目运算符找出两个数中较小的一个
System.out.println(e); //结果为:4
9、逻辑运算符
语法格式为:boolean result =表达式A逻辑运算符 表达式B;
^:判断A和B是否不同,不同则为true,相同则为false。
!:取反,!true结果是false,!fasle结果是true
两组运算符的异同
&与&&和|与||一样,下面就以&与&&为例
相同:都可以用来进行逻辑运算,而且计算的结果都是相同的。
不同:&的运算是必须将所有的表达式判断完然后在运算的而&&的运算时只要前面的表达式可以判断它的真假将就不再进行下去直接输出结果。
例:
System.out.println(false&0<(0/0));
//Exception in thread "main" java.lang.ArithmeticException: / by zero,说明在执行0<(0/0)时出现了异常
System.out.println(false&&0<0/0);
//结果为:false