栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java入门3

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java入门3

目录

一.变量相关例题

例1.

二.运算符

(一)算术运算符

1.基本的算数运算符

2.扩展的算术运算符

(二)赋值运算符

1.基本赋值运算符

2.扩展的赋值运算符

(三)关系运算符

比较运算符

(四)逻辑运算符

1.基本的逻辑运算符

 2.扩展的逻辑运算符

 (五)位运算符

1.位与&

2.位或|

3.位异或^

4.反码~

5.位移运算符

 (六)三元运算符(三目运算符)


一.变量相关例题

例1.
    //第一题 
    byte b1=10,b2=20,b;
	b=b1+b2;
	b=10+20;
    //哪一句是编译失败的呢?为什么呢>如何改正
class  DataTypeDemo{
	public static void main(String[] args){
		  //定义三个变量
		  byte b1 = 10,b2 = 20,b ;
		  //第一句话
		  b=b1+b2 ;
		  System.out.println("b的结果是:"+b) ;
	}
}

运行结果

原因:

        变量相加:要考虑这个两个变量的数据类型,

        b =b1 +b2 ; b1和b2都是byte类型,当参与运算时,b1和b2先提升为int,结果应该int类型

        而b是byte类型,无法接收int类型的结果,必须强制类型转换

解决办法:

强制类型转换

//强制类型转换:目标数据类型 变量名 = (目标数据类型)(初始化值/表达式);
b = (byte)(b1+b2);

运行结果:

class  DataTypeDemo{
	public static void main(String[] args){
		  //定义三个变量
		  byte b1 = 10,b2 = 20,b ;
		  //第二句话
		  b = 10 + 20;
		  System.out.println("b的结果是:"+b) ;
	}
}

运行结果:

 常量相加:先相加,然后看计算结果是否在固定的类型范围内,在范围内就直接赋值

例2

byte  x = 129; 
//是否编译通过,结果是多少,并写出计算过程;

byte类型的取值范围:-128~127

class  DataTypeDemo{
	public static void main(String[] args){
          //定义一个变量
		  byte  x = 129;
          //输出x的结果
		  System.out.println("x的结果是:"+x) ;
	}
}

运行结果:

 由于129已经超出了byte的取值范围,整数类型默认是int类型,jvm在编译的时候会认为是int类型,因此129应该是int类型接收,但是左边的x是byte类型,无法接收int类型的数据,所以必须进行强制类型转换

class  DataTypeDemo{
	public static void main(String[] args){
		  //byte  x = 129;错误: 不兼容的类型: 从int转换到byte可能会有损失
		  //强制类型转换
		  //目标数据类型 = (目标数据类型)(初始化值/表达式);
		  byte x = (byte)129;
		  System.out.println("x的结果是:"+x) ;
	}
}

运行结果

 运算过程

 

二.运算符

(一)算术运算符

1.基本的算数运算符

1)加+

class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 10;
		int b = 20;
		//输出a+b
		System.out.println("a+b="+(a+b));
	}
}

运行结果:

 2)减-

class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 10;
		int b = 20;
		//输出a-b
		System.out.println("a-b="+(a-b));
	}
}

运行结果:

 3)乘*

class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 10;
		int b = 20;
		//输出a*b
		System.out.println("a×b="+(a*b));
	}
}

运行结果

 4)取整/

class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 40;
		int b = 20;
		//输出a/b
		System.out.println("a÷b="+(a/b));
	}
}

运行结果

 5)模余(取余)%

class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 4;
		int b = 3;
		//输出a%b
		System.out.println("a%b="+(a%b));
	}
}

运行结果

2.扩展的算术运算符

++/--

1)单独使用

a.++/--在数据的前面

class OperatorDemo2{
	public static void main(String[] args){
		//定义两个变量
		int a = 4 ; 
		int b = 5 ;
		//分别输出a,b的值
		System.out.println("a="+a) ;
		System.out.println("b="+b) ;
		//情况1:单独使用
		//++或者--在数据的前面
		++a;
		--b;
        //分别输出a,b的值
        System.out.println("a="+a) ;
		System.out.println("b="+b) ;
    }
}

运行结果

b.++/--在数据的后面

class OperatorDemo2{
	public static void main(String[] args){
		//定义两个变量
		int a = 4 ; 
		int b = 5 ;
		//分别输出a,b的值
		System.out.println("a="+a) ;
		System.out.println("b="+b) ;
		//情况1:单独使用
		//++或者--在数据的前面
		a++;
		b--;
        //分别输出a,b的值
        System.out.println("a="+a) ;
		System.out.println("b="+b) ;
	}
}

 运行结果

结论:

无论在数据的前面还是后面,都是对当前变量的值进行自增1或者自减1

2)参与运算使用

a.++/--在数据的前面

class OperatorDemo2{
	public static void main(String[] args){
		//定义两个变量
		int a = 4 ; 
		int b = 5 ;
		//情况2:参与运算使用
		//++或者--在数据的前面
		int m = ++a;
		int n = --b;
        //分别输出a,b,m,n的值
        System.out.println("a="+a) ;
		System.out.println("b="+b) ;
        System.out.println("m="+m) ;
		System.out.println("n="+n) ;
	}
}

运行结果

结论:

++或者--在数据的前面: 先进行自增1或者自减1,然后参与运算

 b.++/--在数据的后面

class OperatorDemo2{
	public static void main(String[] args){
		//定义两个变量
		int a = 4 ; 
		int b = 5 ;
		//情况2:参与运算使用
		//++或者--在数据的后面
		int m = a++;
		int n = b--;
        //分别输出a,b,m,n的值
        System.out.println("a="+a) ;
		System.out.println("b="+b) ;
        System.out.println("m="+m) ;
		System.out.println("n="+n) ;
	}
}

运行结果

 结论:

++或者--在数据的后面: 先进行运算,然后在自增1或者自减1

例题

例1

 
class OperatorTest{
	public static void main(String[] args){
		//定义三个变量
		int a = 10;
		int b = 10;
		int c = 10;
		a = b++;  
		c = --a;  
		b = ++a;   
		a = c--; 
        //输出a,b,c
		System.out.println("a="+a+",b="+b+",c="+c);
	}
}

运行结果

 例2

 
class OperatorTest{
	public static void main(String[] args){
		//定义变量x,求y的值
		int x = 4;
		int y = (x++)+(++x)+(x*10);
		System.out.println("y="+y) ;
	}
}

运行结果

 运算过程

int y = (x++)+(++x)+(x*10);
//int y = 4 + (++5) +(6*10) = 70 

(二)赋值运算符

1.基本赋值运算符

等于=

class OperatorDemo{
	public static void main(String[] args){
		//基本赋值运算符=
		int a = 10 ;
        //输出a
		System.out.println("a的值是:"+a) ;
    }
}

运行结果

注意

等号不能写成==,==属于比较运算符,比较的是两个数据值是否相同

2.扩展的赋值运算符

1)+=

class OperatorDemo{
	public static void main(String[] args){
		//定义一个变量m
		int m = 150 ;
		m += 200 ; 
		System.out.println("m="+m) ;
	}
}

运行结果

int m = 150 ;
m += 200 ;  //都是int类型 等价于 int m = m+200 ;

 2)-=

class OperatorDemo{
	public static void main(String[] args){
		//定义一个变量m
		int m = 150 ;
		m -= 200 ;
		System.out.println("m="+m) ;
	}
}

运行结果

int m = 150 ;
m -= 200 ;  //都是int类型 等价于 int m = m-200 ;

 3)*=

class OperatorDemo{
	public static void main(String[] args){
		//定义一个变量m
		int m = 15 ;
		m *= 20 ;  //都是int类型 等价于 int m = m*20 ;
		System.out.println("m="+m) ;
	}
}

 运行结果

int m = 15 ;
m *= 20 ;  //都是int类型 等价于 int m = m*20 ;

 4)/=

class OperatorDemo{
	public static void main(String[] args){
		//定义一个变量m
		int m = 20 ;
		m /= 3 ;  //都是int类型 等价于 int m = m/3 ;
		System.out.println("m="+m) ;
	}
}

运行结果

int m = 20 ;
m /= 3 ;  //都是int类型 等价于 int m = m/3 ;

 5)%=

class OperatorDemo{
	public static void main(String[] args){
		//定义一个变量m
		int m = 20 ;
		m %= 3 ;  //都是int类型 等价于 int m = m%3 ;
		System.out.println("m="+m) ;
	}
}

运行结果

int m = 20 ;
m %= 3 ;  //都是int类型 等价于 int m = m%3 ;

 例题

例1

 
class Test{
	public static void main(String[] args){
		short s = 1;
		s=s+1;
		System.out.println("s="+s);
	}
}

运行结果

 原因:

//Java默认类型提升(隐式类型转换)

解决办法:

class Test{
	public static void main(String[] args){
		short s = 1;
		//s=s+1;
        s = (short)(s+1);
		System.out.println("s="+s);
	}
}

运行结果 

 
class Test{
	public static void main(String[] args){
		short s = 1;
		s += 1;
		System.out.println("s="+s);
	}
}

 运行结果

 结论

s += 1 ;

(三)关系运算符

比较运算符
 
class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 3 ;
		int b = 5 ;
		int c = 4 ; 
		//直接输出结果
		System.out.println((b+c)<(a+c)) ;
		System.out.println((b+c)<=(a+c)) ;
		System.out.println((b+c)>(a+c)) ;
		System.out.println((a+b)>=(a+c)) ;
		System.out.println((a+b)==(a+c)) ;
		System.out.println(a!=b) ;

	}
}  

运行结果

 可以看到比较运算符的结果是用布尔类型输出的

可以使用布尔类型接收

class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 3 ;
		int b = 5 ;
		int c = 4 ; 
		//可以使用boolean类型变量接收
		boolean flag = ((a+b)>=(a+c)) ;
		System.out.println(flag) ;
	}
}  

 运行结果

 

(四)逻辑运算符

1.基本的逻辑运算符

1)逻辑单与&

 
class OperatorDemo{
	public static void main(String[] args){
		//定义三个变量
		int a = 3 ;
		int b = 4 ;
		int c = 5 ; 
		//逻辑单与&:并列条件
		System.out.println((a>b) & (a>c)) ;
		System.out.println((a>b) & (ac)) ;
		System.out.println((a 

运行结果 

 运算过程

//逻辑单与&
System.out.println((a>b) & (a>c)) ; //false & false = false
System.out.println((a>b) & (ac)) ; //true & false = false
System.out.println((a 

2)逻辑单或|

 

运行结果 

class OperatorDemo{
	public static void main(String[] args){
		//定义三个变量
		int a = 3 ;
		int b = 4 ;
		int c = 5 ; 
		//逻辑单或|:或的关系
		System.out.println((a>b) | (a>c)) ; 
		System.out.println((a>b) | (ac)) ; 
		System.out.println((a 

运算过程

//逻辑单或|
System.out.println((a>b) | (a>c)) ; //false | false =false
System.out.println((a>b) | (ac)) ; // true | false = true
System.out.println((a 

3)逻辑异或^

 
class OperatorDemo{
	public static void main(String[] args){
		//定义三个变量
		int a = 3 ;
		int b = 4 ;
		int c = 5 ; 
		//逻辑异或^
		System.out.println((a>b) ^ (a>c)) ; 
		System.out.println((a>b) ^ (ac)) ; 
		System.out.println((a 

运行结果

//逻辑异或^
System.out.println((a>b) ^ (a>c)) ; //false ^ false = false
System.out.println((a>b) ^ (ac)) ; // true ^ false =  true
System.out.println((a 

 4)逻辑非!

 
class OperatorDemo{
	public static void main(String[] args){
		//定义三个变量
		int a = 3 ;
		int b = 4 ;
		int c = 5 ; 
		//逻辑非!
		System.out.println(!(a>b)) ;
		System.out.println(!!(a>b)) ;
	}
}

运行结果

 2.扩展的逻辑运算符

1)逻辑双与&&

class OperatorDemo2{
	public static void main(String[] args){
		//定义两个变量
		int x = 3;
		int y = 4;
		System.out.println("x="+x+",y="+y);
		System.out.println("-------------------");
		//逻辑双与&&
		System.out.println(((++x)==4) && ((--y)==5));
		System.out.println("x="+x+",y="+y);
		System.out.println(((++x)==3) && ((--y)==5));
		System.out.println("x="+x+",y="+y);
	}
}

 运行结果

 

 2)逻辑双或||

class OperatorDemo2{
	public static void main(String[] args){
		//定义两个变量
		int x = 3;
		int y = 4;
		System.out.println("x="+x+",y="+y);
		System.out.println("-------------------");
		//逻辑双与||
		System.out.println(((++x)==4) || ((--y)==5));
		System.out.println("x="+x+",y="+y);
		System.out.println(((++x)==3) || ((--y)==5));
		System.out.println("x="+x+",y="+y);
	}
}

运行结果 

 
 

 (五)位运算符

1.位与&
class OperatorDemo{
	public static void main(String[] args){
        //3位与&4
		System.out.println("3&4="+(3 & 4));
    }
}

 运行结果

  运算过程

 

2.位或|
class OperatorDemo{
	public static void main(String[] args){
        //3位或|4
		System.out.println("3|4="+(3 | 4));
    }
}

 运行结果

 运算过程

 

3.位异或^
class OperatorDemo{
	public static void main(String[] args){
		//3位异或^4
		System.out.println("3^4="+(3 ^ 4));
    }
}

 运行结果

 运算过程

 

位异或^的特点

 一个数据被另一个数据位异或两次,其值是它本身

例题

class OperatorDemo2{
	public static void main(String[] args){
		//定义两个变量
		int a = 10;
		int b = 20;
		System.out.println(a ^ b ^ b);
		System.out.println(a ^ b ^ a);
	}
}

 运行结果

 运算过程

 
 

4.反码~
class OperatorDemo{
	public static void main(String[] args){
		//反码3
		System.out.println("~3="+(~ 3));    
    }
}

运行结果

 运算过程

 

5.位移运算符

1)<<:左移

 
class OperatorDemo3{
	public static void main(String[] args){
		System.out.println("2<<2="+2<<2);
	}
}

 运行结果

 运算过程

 

 2)>>:右移

 
class OperatorDemo3{
	public static void main(String[] args){
		System.out.println("24>>2="+(24>>2));
	}
}

运行结果

 运算过程

 

 3)>>>:无符号右移

 
class OperatorDemo3{
	public static void main(String[] args){
		System.out.println("-24>>>2="+(-24>>>2));
	}
}

运行结果

(六)三元运算符(三目运算符)
 
class OperatorDemo{
	public static void main(String[] args){
		//需求:有两个变量a,b,分别初始化,比较两个数据的最大值;
		int a = 10 ;
		int b = 5 ;
		//定义结果变量
		//(表达式)?执行true的结果:执行false的结果;
		int max = (a>b)?a:b;
		System.out.println("max="+max) ;
	}
}

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号