您的位置 首页 java

java学习笔记(基础篇)—变量与表达式

java学习笔记(基础篇)—变量与表达式

一: 局部变量 和实例变量

  • 定义变量是指设定变量的数据类型和变量的名字, Java 语言要求变量遵循先定义,再初始化,然后使用的规则。
  • 作用域:指它的存在范围,只有在这个范围内,程序代码才能访问它。 变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占用内存空间的过程。

局部变量 (参数变量也可以看成是局部变量):

1)位置:定义在方法中或者在方法中的{}

2)使用:先赋值后使用

3)作用域:定义的方法中或者定义的{}中

4)生命周期:从变量的定义到方法调用结束

局部变量的例子:

public void method1() {
 int a = 0; //局部变量,作用域为整个method01方法;
 { int b = 0; //局部变量,作用域为所处的代码块;
 b = a;
 }
 b = 20; //编译出错,b不能被访问;
} 

实例变量:

1)位置:定义方法外,类里面

2)使用:系统会进行默认初始化

3)作用域:作用于整个类

4)生命周期:从对象创建的时候到gc回收内存结束

实例变量的例子:

class Test {
 private int n1=0;
 private int n2=0;
 public int add() {
 int result = n2 + n2;
 return result;
 }
} 

二:操作符:

  • 操作符能与相应类型的数据组成表达式,来完成相应的运算。

a)数学运算操作符

+数据类型值相加或字符串连接;

System.out.println(1+2+"a"); //输出3a
System.out.println(1+2.0+"a"); //输出3.0a
System.out.println(1+2.0+"a"+true); //输出3.0atrue
System.out.println("a"+1+2); //输出a12
System.out.println(1+"a"+2); //输出1a2 

/整除, 如 操作数 均为整数,运算结果为商的整数部分

int a1=12/5; //a1变量的取值为2
int a2=13/5; //a2变量的取值为2
int a3=-12/5; //a3变量的取值为-2
int a4=-13/5; //a4变量的取值为-2
int a5=1/5; //a5变量的取值为0
double a6=-12/5; //a6变量的取值为-2.0 
double a7=-12/5.0; //a7变量的取值为-2.4  

%取模操作符, 如操作数均为整数,运算结果为商的整数部分

int a1=1%5; //a1变量的取值为1
int a2=13%5; //a2变量的取值为3
double a3=1%5; //a3变量的取值为1.0
double a4=12%5.1; //a4变量的取值为1.8000000000000007 
//整除, 如操作数均为整数,运算结果为商的整数部分
int a1=12/5; //a1变量的取值为2
int a2=13/5; //a2变量的取值为2
int a3=-12/5; //a3变量的取值为-2
int a4=-13/5; //a4变量的取值为-2
int a5=1/5; //a5变量的取值为0
double a6=-12/5; //a6变量的取值为-2.0 
double a7=-12/5.0; //a7变量的取值为-2.4  

b) 赋值操作符:

 = : int x=0,i=1,j=1;
 *=: 这里的"*="由操作符"*"和"="复合而成,
 它等价于 a=a*b,这种复合操作符能使程序变得更加简洁。
 /=: a/=b 等价于 a=a/b;
 %=:a%=b 等价于 a=a%b; 

注意:+=和+的区别 如:short a=0; int b=123456; a+=b;和a=a+b;的区别: +=系统会进行隐式的数据类型转换,向=左边的数据类型进行转换。 a+b会向数据类型高的类型转换

c) 比较操作符

>大于
>= 大于等于
< 小于
<= 小于等于
以上操作符只适用于整数类型和浮点数类型;
 int a=1,b=1;
 double d=1.0;
 boolean result1 = a>b; //result1的值为false;
 boolean result2 = a<b; //result2的值为false;
 boolean result3 = a>=d; //result3的值为true;
 boolean result4 = a<=b; //result4的值为true;  

instanceof:

判断一个引用类型所引用的对象是否是一个类的实例。该操作符左边是一个对象,右边是一个类名或接口名。形式如下:

如:String str="hello"
 System.out.println(str instanceof String);
 System.out.println(str instanceof Object);
 System.out.println(str instanceof Student); //false 

java.lang.Object是所有类的父类, 每一个类都会默认继承Object 子类是一个父类 是is a的关系

d)相等操作符

== 等于 != 不等于 既可以是基本类型,也可以是引用类型: 基本数据类型比较是真正的数值 引用类型比较的是地址,如果要比较引用类型真正的数据使用equals

如:int a=1,b=1;
System.out.println(a==b); //输出true;
如:String s1="hello";
 String s2="hello";
 String s3=new String("hello");
 String s4=new String("hello");
 System.out.println(s1==s2); //true
 System.out.println(s3==s4); //false
 System.out.println(s1==s3); //false
 System.out.println(s3.equals(s4)); //true 

e) 移位操作符,针对二进制操作

算术右移 位运算 ,也称做带符号右移位运算。最高为补符号位。
> 逻辑右移位运算,也称为不带符号右移位运算。
> << 左移位运算,也称为不带符号左移位运算。 

f) 位运算操作符

&: 与运算,运算规则为:1&1->1, 1&0->0, 0&1->0, 0&0->0; 
|: 或运算,运算规则为:1|1->1, 1|0->1, 0|1->1, 0|0->0;
^: 异或运算,运算规则为:1^1->0, 1^0->1, 0^1->1, 0^0->0;
 两个值相同为0,不同为1;
~ : 取反运算, ~1->0, ~0->1;

例如:8>>2====>8/2^2=2
8:0000...00001000 
 0000.........10 ====>2
8>>>3=====>8/2^3=1
8:0000...00001000 
 00000000.000001=====>1
8<<2======>8*2^2=32
8:0000...00001000 
 000000000100000======>32
1&1=1 1&0=0 0&0=0
1|1=1 1|0=1 0|0=0
1^1=0 1^0=1 0^0=0
~1=0
~0=1 
8&2=0 8|2=10 8^2=10
~8=
~2=

1010
10===>第三位置1===>14
10===>第二位清0===>8
10===>第一位置反===>11
10===>输出相应的二进制 

f) 逻辑操作符

短路操作符: 如果能根据操作左边的布尔表达式就能推算出整个表达式的布尔值,
将不执行操作符右边的布尔表达式;
&&:左边的布尔表达式的值为false, 整个表达式值肯定为false, 
 此时会忽略执行右边的布尔表达式。
||:左边的布尔表达式的值为true, 整个表达式值肯定为true, 
 此时会忽略执行右边的布尔表达式。 
if(条件1&&条件2){} 
 if条件1为假,不会执行条件2
 if条件1为真,会执行条件2
if(条件1||条件2){} 
 if条件1为真,不会执行条件2
 if条件1为假,会执行条件2  

g) 条件操作符

布尔表达式 ? 表达式1 : 表达式2
如果布尔表达式的值为true,就返回表达式1的值,否则返回表达式2的值。
int score = 61;
String result = score>=60?"及格":"不及格";

h)++,--
前++与后++
前--与后--
int a=10;
b=++a =====>a=11,b=11,先计算,后赋值
b=a++ =====>a=11,b=10,先赋值,后计算
System.out.println("a:"+a+" b:"+b); 

三.数据类型的转换

1)基本数据类型转换

隐式的数据类型转换:精度小的数据给精度大的数据
强制(显式)的数据类型转换:(type)精度大的数据给精度小的数据
System.out.println((int)(char)(byte)-1);
数据类型在转换的时候注意:
a)如果将精度小的数据转为精度大的数据时。
 如果转之前是有符号数,在前面补符号位
 如果转之前是无符号数,在前面补0
b)如果将精度大的数据转为精度小的数据时。
 从低位窃取位数  

2)引用数据类型转换

隐式的数据类型转换:子类转换父类 
强制(显式)的数据类型转换:父类转换子类 
String str="hello"; Object o=str; String str2=(String)o; 

文章来源:智云一二三科技

文章标题:java学习笔记(基础篇)—变量与表达式

文章地址:https://www.zhihuclub.com/196070.shtml

关于作者: 智云科技

热门文章

网站地图