Java入门到精通个人笔记详细(四)-------基础支撑知识储备(变量与运算)

  1. 声明变量

定义变量就是告诉编译器(compiler)这个变量的数据类型,这样编辑器才知道需要分配多大内存,以及它可以放什么样子的数据

系统内存大致分三个区:

系统(OS)

程序(Program)

数据(Data)

当程序执行时,程序代码会加载内存中在程序区,数据暂时存储在数据区,假设上述两个变量被定义在方法体中,则程序加载到程序区中

变量命名的规则:

  1. .变量必须是一个有效的标识符
  2. .变量名不可以使用Java 的关键字
  3. .变量名不能重复
  4. .应选择有意义的单词作为变量名
  1. 声明常量

在程序运行过程中一直不会被改变的量称为常量,也叫final变量,常量在整个程序中只能被赋值一次,常量名通常用大写字母表示,但不是必须的。当定义的final变量属于成员变量时,必须在定义时就设定它的初值,否则将产生编译错误

final 数据类型 常量名称[=值]

 

  1. 变量的有效范围

变量被定义出来之后只是暂存在内存中,等到程序执行到某一个点,该变量会被释放掉,所以变量的有效范围是指程序代码能够访问变量的区域,若超出该区域,则编译时会出现错误,在程序中,一般会根据变量的“有效区域”将变量分成“成员变量”和“局部变量”。

  1. 成员变量

在类体中所定义的变量被称为成员变量,成员变量在整个类中都有效,类的成员变量可以分为静态变量和实例变量

Class var{

Int x=45;//实例变量

Static int y=90//静态变量(类变量)

}

  1. 局部变量

在类的方法体中声明的变量,包括方法的参数,都属于局部变量。但方法被调用时,Java虚拟机为方法中的局部变量分配内存空间,当该方法调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将会销毁。

 

  1. 运算符
  1. 赋值运算符

二元运算符:对两个操作数进行处理

  1. 算数运算符

运算符

说明

实例

结果

+

12.45f+15

27.45

-

4.56-0.16

4.4

*

5L*12.45f

62.25

/

7/2

3

%

取余数

12%10

2

-、+还可以做数据正负号

0不可以做除数,否则会抛出AirthemticException异常

 

  1. 自增自减运算符

自增、自减运算符是单目运算符,可以放在操作元前或者后,操作元必须是一个整型或者浮点型变量。

b=++a(先a自加然后再用,若a初始值为4,b=5)

b=a++(先用a然后再自加,若a初始值为4,b=4,a=5)

 

  1. 比较运算符

比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。

 

Java 中常用的比较运算符如下表所示:

 

 

注意哦:

 

(1)  > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型

 

(2) == 、 != 两边的操作数既可以是数值类型,也可以是引用类型

 

public class HelloWorld{

    public static void main(String[] args) {

int a=16;

double b=9.5;

String str1="hello";

String str2="imooc";

System.out.println("a等于b:" + (a==b));

System.out.println("a大于b:" + (a > b));

System.out.println("a小于等于b:" + (a < b));

System.out.println("str1等于str2:" + (str1 == str2));

}

}

 

  1. 逻辑运算符(逻辑与、逻辑或、逻辑非)

1.使用规则:

(1)& 可以用作逻辑与的运算符,表示逻辑与(and)【判断两个表达式】

      a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

      b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断

(2)&& 可以用作逻辑与的运算符,表示逻辑与(and)【针对boolean类型的类进行判断

      a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

      b、第一个条件不成立,后面的条件均不进行判断,返回false

(3)| 可以作逻辑或运算符,表示逻辑或(or)

      a、当运算符有一边为true时,整个运算结果为true

      b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断

(4)|| 可以作逻辑或运算符,表示逻辑或(or)

      a、当运算符有一边为true时,整个运算结果为true

      b、第一个条件成立,后面的条件均不进行判断,返回true

2.使用案例:

    String s = null;

   1. if((s!=null)&(s.length()>0)){}

   2. if((s!=null)&&(s.length()>0)){}

   3. if((s==null)|(s.length()==0)){}

   4. if((s==null)||(s.length()==0)){}

上述案例在java运行情况中,1,3均抛出NullPointerException异常。

  1. 位运算符

左移运算符:<< 二进制左移多少位,每左移一位便乘以2(在一定范围内);

有符号右移运算符(最高位为什么就用什么补,如(高位为1则用1补,为0用0补)):>> 二进制右移多少位,每左移一位便除以2(在一定范围内);

无符号右移运算符(最高位无论为什么都用0补):>>>

与运算符:& 相同位都为1则取1,否则取0;

或运算符:| 相同位有一个为1则取1,都为0才取0;

异或运算符:把两位数转化成二进制,相同取0,否则取1^ ;

取反运算符:~ 相同位0取1,1取0;

>>>:无论最高位是0还是1,左侧被移空的高位都填入0.

 

  1. 三元运算符

第一个是表达式,剩余两个是值,条件表达式为真时,取第一个值,为假时,取第二个值。 
示例代码如下: 
boolean a = 20 < 45 ? true : false 
三元运算符的优先级高于赋值运算符,故第一个表达式为真,取第一个值,返回 a=true; 
三元运算符用于做判断,其等价的if-else语句如下: 
boolean a; 
if (20 < 45) { 
a = true; 
}else{ 
a = false; 

很多时候三元运算符可以和if-else语句进行互换,它们两个可以等价的实现判断的效果,但是三元运算符和if-else还是有不同之处的,下面我们来具体谈谈不同之处: 
第一 
两者之间对于返回值有不同的要求。三元运算符是必须要有返回值的要求,其运算后一定有一个返回值返回给开发人员使用,而if-else不一定有返回值,其执行结果可能是赋值语句或者是输出语句。 
第二 
两者的性能不同。三元运算符的运算性能高于if-else。 
第三 
两者使用范围不同,在ireport的一些动态执行的情况下,只能用三元运算符而不能用if-else语句,当然在大多数情况下两者是可以等价互换的 
第四 
两者的语言特性不同,三元运算符设计到一种双目运算符提升的特性, 
所谓双目数值提升,在双目运算符java的开发环境下可以简单的理解为类型转换的问题。 
1.如果定义了数据类型的变量和未定义数据类型的变量参与双目运算符的后双目运算,那么返回的结果就是范围大(精度高)的类型。 
2.如果两个定义了数据类型的变量参与双目运算符的后双目运算,那么返回的结果就是范围大(精度高)的类型。 
3.如果直接进行数值的比较,则自动转型为范围大(精度高)的类型。

 

 

发布了9 篇原创文章 · 获赞 2 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章