java变量与运算符

Java变量

1、java中的变量

   1.变量先定义,后使用。

   2.定义:①声明,②赋值

   3.定义的三要素:数据类型 变量名 初始化值

2、变量有以下两种定义方式:

方式一:数据类型 变量名 //声明

变量名 = 初始化值//赋值

int myInt1;// 声明

System.out.println(myInt1);//使用

myInt1 = 2;// 赋值

System.out.println(myInt1);//

使用int myInt2, myInt3;// 声明:

一次声明多个myInt2 = 3;// 赋值myInt3 = 4;// 赋值

System.out.println(myInt2);//

使用int myInt4, myInt5;// 声明

myInt4 = myInt5 = 7;// 连续赋值,使用不多

方式二:数据类型 变量名 = 初始化值;

int myInt6 = 9;int myInt7 = 9, myInt8 = 10;// 一次定义多个

3、变量的类型:基本数据类型(8种byte short int long float double char boolean)、引用数据类型(String)

1、整数类型:byte(1字节) short(2字节) int(4字节) long(8字节)

byte b = 12;

short s = 12;

int i = 12;

long l = 12l;//long类型变量,值得末尾加L或l

2、浮点类型(带小数):float单精度(4) double双精度(8)

float f = 12.3f;//声明float类型,末尾要加F或f

 double d = 12.3;

3、字符型:char(2),

有3中表现形式①、用''单引号括起来的单个字符char c = 'a';c = '中';

②转义字符\c = '\n'; //转义字符,/把n转义为换行c = '\t';//代表制表符Tabc = '\"';

③直接使用 Unicode 值来表示字符型常量c = '\u4e2d';//Unicode字符做运算

char c2 = 'A';//65

System.out.println(c2 + 1);

c2 = 'a';//97

System.out.println(c2 + 1);

引用数据类型:String,可以取值null

String str = "中国";

str = null;

基本数据类型和引用数据类型的区别:基本数据类型 内存中存储的是值

引用数据类型 内存中存储的是地址,此地址指向对象;

4、类型转换

1)基本数据类型之间的转换:boolean不可以转换为其它

基本数据类型容量从小到大(参考图)char-->int-->long-->float-->doublebyte-->short-->

①自动类型转换(隐式转换)定义:容量小的数据类型自动转换为容量大的数据类型

②强制类型转换定义:自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符()

2)字符串与基本数据类型之间的转换

①基本数据类型==>字符串:通过连接运算符+,基本类型的值将自动转化为字符串类型

②字符串==>基本数据类型:通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型如:

 String a = “43”; int i = Integer.parseInt(a);

容量从小到大char-->int-->long-->float-->doublebyte-->short-->

 *///自动类型转换:容量小的转换为容量大的数据类型//

1)赋值运算int i = 2;byte b = 1;i = b;System.out.println(i);short s = 3;i = s;System.out.println(i);char c = 'a';

i = c;

System.out.println(i);//

2)算术运算:有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的数据类型,然后再进行计算。

 int i2 = 1;

byte b2 = 2;

i2 = b2 + i2;

char c2 = 'b';

i2 = c2 + i2;//注意:byte、short、char之间不会相互转换,他们三者在计算时首先转换为int类型

    i2 = b2 + c2;//强制类型转换:容量大的转换为容量小的

long l = 12345L;

int i3 = (int)l;

byte b3 = (byte)i3;

System.out.println(Byte.MAX_VALUE);

System.out.println(Byte.MIN_VALUE);

System.out.println(b3);//注意:可能造成精度降低或溢出//-------------------------//

基本数据类型===>字符串

int i4 = 3;

String str = i4 + "";

字符串===>基本数据类型

str = "2";i4 = Integer.valueOf(str);

System.out.println(i4);}

5、运算符1)算数运算符:+(正号、加、字符串相加)-(负号、减)*(乘)/(除)%(取模)++ --

//除/int i = 12;

int j = 5;

int k = i / j;

System.out.println(k);//整数之间做除法时,只保留整数部分而舍弃小数部分

double d = i / j; //i / j 结果为2 int,把int赋值给double,自动类型转换System.out.println(d);//2.0

d = (double)i / j; //(double)i强制类型转换为double,double和int做运算System.out.println(d);//2.4

d = i / 5.0;System.out.println(d);//2.4

//取模%(取余数)

k = 13 % 5;

System.out.println(k);

//++

i = 1;

i++;//i = i + 1;

System.out.println(i);

++i;//i = i + 1;

System.out.println(i);

i = 1;

k = i++;//k=i;i=i+1;

System.out.println(k);

i = 1;

k = ++i;//i=i+1;k=i;

System.out.println(k);

//--

i = 2;

i--;

System.out.println(i);

i = 2;

--i;

System.out.println(i);

i = 2;

k = i--;//k=i;i=i-1;

System.out.println(k);//2

i = 2;

k = --i;//i=i-1;k=i;

System.out.println(k);//1

//字符串相加+

String str = "hel" + "lo";

System.out.println(str);

2)赋值运算符

=:当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。

支持连续赋值。例如int i; int j; i=j=1;

扩展赋值运算符: +=, -=, *=, /=, %=

public class TestAssign

 {public static void main(String[] args) {

int i,j;

i = j = 1;

int a = 10;

a = a + 3;

System.out.println(a);

a = 10;

a += 3;

System.out.println(a);

i = 13;

i = i % 5;

i = 13;

i %= 5;

boolean b = false;

if(b = true) { //b = true;if(b)

System.out.println("b是true");

} else {

System.out.println("b是false");}}}

3)比较运算符(关系运算符)

运算符        运算        范例        结果

==           相等于        4==3      false

!=             不等于      4!=3       true

<                小于        4<3         false

>                  大于      4>3          true

<=              小于等于   4<=3(4<3或4==3) false

 >=            大于等于    4>=3(4>3或4==3) true

instanceof检查是否是类的对象"Hello" instanceof  String true

说明:比较运算符的结果都是boolean型;比较运算符“==”不能误写成赋值运算符“=”

public class TestCompare {

public static void main(String[] args) {

boolean b;b = (4 == 3);

System.out.println(b);

System.out.println(4 == 3);

b = (4 != 3);

b = 4 < 3;

 b = 4 > 3;

 b = 4 <= 3;

   b = 4 >= 3;

System.out.println(b);

b = "hello" instanceof String;

System.out.println(b);

int i = 13;

//判断i是否是偶数

b = (i % 2) == 0;b = (i % 2) != 1;

//判断i是否是奇数

b = (i % 2) != 0;b = (i % 2) == 1;

//判断i是否能被3整除

b = (i % 3) == 0;/

/判断i是否能被7整除

b = (i % 7) == 0;

int s = 10;int t = 5;

//判断s是否能被t整除

b = (s % t) == 0;

4)逻辑运算符

&逻辑与      |逻辑或         !逻辑非

&&短路与       ||短路或      ^逻辑异或

说明:逻辑运算符用于连接布尔表达式,结果都是boolean型,也就是要么是true,要么是false

运算结果:

a        b            a&b             a&&b            a|b                  a||b            !a            a^b

 true    true         true               true            true               true             false       false

true     false      false              false             true              true             false        true

false     true        false             false            true             true             true          true

false      false       false            false            false            false           true         false

 public class TestLogic {

public static void main(String[] args) {

boolean a = false, b = true;

System.out.println(a && b);//&&、 &结果相同

System.out.println(a || b);//|| 、|结果相同

System.out.println(!a);

System.out.println(a^b);

int x = 5;//x> 3) && (x < 6);

System.out.println(result);

System.out.println((x == 3) || (x == 5));//true

 System.out.println((x == 3) && (x == 5));

System.out.println(!(x == 3));

System.out.println(x <= 3);//x<3 || x==3

System.out.println((x == 3) ^ (x == 5));

 //&& &区别

/* * &&当左边表达式为false时,右边表达式不再进行运算

 * &两边表达式都要进行运算 *


a = true; b = true;

if((a = false) && (b = false)) {//a=false;if(a&&(b=false))

System.out.println("1:" + a + b);

 } else {

System.out.println("2:" + a + b);

}

if((a = false) & (b = false)) {//a=false;b=false;if(a&b)

System.out.println("1:" + a + b);

 } else {

System.out.println("2:" + a + b); }

//|| |区别 } }

 5)三元运算符

 public class TestSanYuan {

public static void main(String[] args) {

int x = 20; int y = 21; int max = (x>y)?x:y;

System.out.println(max);

/* 格式:(条件表达式)?表达式1:表达式2;

如果条件表达式结果为true,运算后的结果是表达式1;

 如果条件表达式结果为false,运算后的结果是表达式2;

 说明: 三元运算符要求必须返回一个结果,结果的数据类型、表达式1的数据类型、表达式2的数据类型要相同

*/ // max = (x>y)?"20":y; //三元运算符可改写为if-else语句,反之不行(if后的代码块可有多个语句)

 if(x>y) { max = x;

} else {

max = y;

}

//下面if语句无法改写为三元运算符

if(x > y) {

max = x;

System.out.println("x是大于y");

} else {

 max = y;

 }

 6)运算符的优先级 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。上一行运算符总优先于下一行。 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。

你可能感兴趣的:(java变量与运算符)