类型转换 两个工具 运算符

数据类型转换 :
对应类型的数据赋值给对应类型的变量

	自动类型提升 : 
		小---->大 ===> 可以正常存放,但是可能会造成内存的浪费
	
	强制类型转换 : 
		大---->小 ===> 不能发生,有可能会造成损失精度
		小范围类型 变量名 = (小范围类型)大范围类型数据;
		
	注意: 如果存储多种类型的数据参与运算,结果类型为参与运算的最大类型
		  如果结果类型为<int类型,最终会自动提升 为int类型
		  如果为byte,short,char赋值时候,把int类型的常量,只要范围 允许可以成功赋值
		  boolean不参与类型转换
		  
byte -- >short  --> int ---> long --> float ---> double
public class Class010_DataTypeCon{
	//程序的入口
	public static void main(String[] args){
		//自动
		byte  b1 = 100;
		short s1 = 1;
		int i1 = b1;
		System.out.println(b1);
		System.out.println(i1);
		
		long l1 = b1+s1;
		System.out.println(l1);
		
		float f1 = l1;
		System.out.println(f1);
		
		double d1 = b1+s1+l1+f1;
		System.out.println(d1);
		
		final int i2 = 97;
		char ch = i2;
		System.out.println(ch);
		
		//强制
		short s2 = (short)i1;
		System.out.println(s2);
		
		short s3 = (short)(s2+1);
		System.out.println(s3);
		
		//圆环形状
		byte b2 = (byte)130;
		System.out.println(b2);
		
		int sal = 1000000000;
		int month = 12;
		
		long result = (long)sal*month;
		System.out.println(result);
	}
	
}

键盘录入
基本数据类型 :
int i = 1;
引用数据类型的使用 :
1.导包 : 指明要使用类型的位置
import 包名.类名;
定义在类的上面
2.引用数据类型 引用|变量名 = new 引用数据类型();
3.使用功能
引用.公共名字();

Scanner : 接收用户键盘输入的内容
	1.导入 
		import java.util.Scanner;
		
	2.创建 Scanner类型的引用
		Scanner sc = new Scanner(System.in);
	
	3.使用工能
	    引用.nextInt()   **** 接收用户键盘输入int类型的内容
	    引用.nextByte()
	    引用.nextShort()
	    引用.nextLong()
	    引用.nextDouble() ****
	    引用.nextFloat()
		从有效字符开始接受,遇到enter建结束功能
		引用.next() 接收用户键盘输入String类型的内容
			从有效字符开始接收,遇到 空格等不接受,遇到enter建结束功能
		引用.nextLine() 接收用户键盘输入一整行的String类型的内容
			遇到enter建结束功能

注意: 不要定义与jdk中类型同名,同包的类
	  如果在 nextLine上面存在系列的next工能.,需要处理遗留enter问题
import java.util.Scanner;
public class Class011_Scanner{
	//程序的入口
	public static void main(String[] args){
		//1.导入 
		//2.创建 Scanner类型的引用
		Scanner sc = new Scanner(System.in);
		//3.使用工能
		System.out.println("请输入年龄 : ");
		int age = sc.nextInt();
		System.out.println(age);
		
		System.out.println("请输入薪资 : ");
		double sal = sc.nextDouble();
		System.out.println(sal);
		
		System.out.println("请输入用户名 : ");
		String name = sc.next();
		System.out.println(name);
		
		//处理遗留enter问题
		sc.nextLine();
		
		System.out.println("请输入用求偶标准 : ");
		String msg = sc.nextLine();
		System.out.println(msg);
	}
	
}

随机生成
Random : 产生随机数
1.导包
import java.util.Random
2.创建Random类型的引用
Random ran = new Random();
3.使用功能
ran.nextInt() 随机产生int范围内的整数
ran.nextInt(整数n) 随机[0,n)整数
ran.nextDouble() [0.0,1.0) 随机产生double范围的小数

	公式总结 : 
		随机整数:
			[0,n)      ran.nextInt(整数n)
			[0,n]      ran.nextInt(n+1)
			[min,max)  ran.nextInt(max-min)+min
						   ran.nextInt(max)->[0,max)
						   ran.nextInt(max)+min->[min,max+min)
						   ran.nextInt(max-min)+min->[0,max-min)+min -->[min,max)
			[min,max]      ran.nextInt(max-min+1)+min
	
	注意 : 伪随机数

运算符

	算数运算符
	赋值运算符
	比较运算符|关系
	逻辑运算符
	位运算符 
	条件运算符
	
	操作数 : 运算符左右两边的数据
	表达式 : 运算符连接操作数整体称为表达式
	语句 : 语句以;结束
	
	一元运算符|单目运算符 : 操作数只有一个  +  -(正负号)   ++  --
	二元运算符|双目运算符 : 操作数有两个  +   -  *  /
	三元运算符|三目运算符 : 操作数有三个 条件运算符
*算术运算符*

	+ - * / % ++ --+: 
		1)正号 (省略)
		2)加法运算
		3)字符串的连接符
			当+左右两边一旦出现""字符串,+就做为字符串连接符,把左右两边的数据拼接成为一个字符串
	- : 
		1)负号
		2)减法运算
	
	% 取余数 | 取余|模以
		当第一个操作数<第二个操作数,结果为第一个操作数
public class Class013_Operator{
	//程序的入口
	public static void main(String[] args){
		int i = +3;
		System.out.println(i);
		
		System.out.println("i = "+i); //"i = 3"
		
		System.out.println("hello"+'a'+1); //"helloa"+1="helloa1"
		System.out.println('a'+1+"hello"); //98+"hello"  = "98hello"
		System.out.println("hello"+true); //"hellotrue"
		
		
	}

一元运算符
++ – 一元运算符 a++ ++a a-- --a
++ 自增 : 自身+1 a++==> a=a+1

	-- 自减 : 自身-1    a-- ==> a=a-1
	
	规律 : 
		只操作自己 :
			++放在操作数的前面后面都是自身+1
			--放在操作数的前面后面都是自身-1
		
		影响其他结果 : (赋值,表达式,输出)
			++--放在操作数前面,先+1|-1,再去运算
			++--放在操作数后面,先去运算,再进行+1|-1

赋值运算符
基础赋值运算符
=
=是java中唯一一个自右向左运算的符号
优先级最低

	扩展赋值运算符(算数运算符+基础 赋值运算符 )
		+=
			a=a+10;==> a+=10;
		-=
		*=
		/=
		%=
		优点:
			执行效率快
			自动做强制类型转换
		
		注意: 编译期间编译器会自动把可以实现的位置优化成为扩展赋值运算符

逻辑运算符
& 与
两个都为真true,结果才为true,一个为false就是false
| 或
一个为true就是true,两个都为false才是false
! 非
取反
!true -> false
!false -> true
^ 异或
相同为false,不同为true

	短路 : 如果左边的操作数的值能够决定最终表达式的结果 ,第二个操作数不会执行
		&&  : 两个都为真true,结果才为true,一个为false就是false
		||  : 一个为true就是true,两个都为false才是false
	
	注意: 
		操作数必须为boolean,值为boolean的表达式
		建议使用短路运算符
public class Class017_Operator{
	//main方法 
	public static void main(String[] args){
		System.out.println("-----------------&-----------------");
		System.out.println(true&true);  //true
		System.out.println(true&false);  //false
		System.out.println(false&false);  //false
		System.out.println(false&true); //false
		
		System.out.println("-----------------|---------------");
		System.out.println(true|true);  //true
		System.out.println(true|false);  //true
		System.out.println(false|false);  //false
		System.out.println(false|true); //true
		
		System.out.println("-----------------!---------------");
		System.out.println(!true);  //false
		System.out.println(!false);  //true
		
		System.out.println("-----------------^---------------");
		System.out.println(true^true);  //false
		System.out.println(true^false);  //true
		System.out.println(false^false);  //false
		System.out.println(false^true); //true
		
		System.out.println("-----------------&&`-----------------");
		System.out.println(true&&true);  //true
		System.out.println(true&&false);  //false
		System.out.println(false&&false);  //false
		System.out.println(false&&true); //false
		System.out.println("-----------------& 与 &&-----------------");
		//System.out.println(false&5/0==0);  // java.lang.ArithmeticException: / by zero
		System.out.println(false&&5/0==0);  //false
		
		System.out.println("=============练习=================");
		int a=10;
		int b=9;
		System.out.println(a>b & ++b>a);  //false
		System.out.println("a="+a+",b="+b);  //a=10 b=10
		System.out.println(a<b | b<a);    //false
		System.out.println(!(a>b ^ a>9)); //true
		System.out.println(10>5 & 10/0==0); //数学错误,不能输出
		System.out.println(10<5 && 10/0==0); //false
	}
	
}

条件运算符
条件表达式 ? 值1 : 值2 ;

	条件表达式 : 值为boolean类型的表达式
	
	执行流程: 
		1.计算条件表达式,得到boolean结果
		2.为true,结果为值1
		  为false,结果为值2
public class Class018_Operator{
	//main方法 
	public static void main(String[] args){
		String s = false ? "值1" : "值2";
		System.out.println(s);
		
		int a = 5;
		String s2 = a>0? "a>0" : "a<=0";
		boolean flag = a>0? true : false;
		System.out.println(flag);
		System.out.println(a>0);
		
		int b = 7;
		//求2个数最大的值
		int max = a>b?a:b;
		System.out.println(max);
		
		//求2个数值最大的变量
		String name = a>b? "a" : "b";
		
		//判断a是否为偶数
		System.out.println(a%2==0?"偶数":"奇数");
		
		//求3个变量中最大的值
		
	}
	
}

比较运算符|关系运算符
> < >= <=
byte,short,int,long,float,double,char
== !=
基本,引用

	结果都为boolean类型
public class Class016_Operator{
	//main方法 
	public static void main(String[] args){
		int a = 1;
		
		boolean flag = a>0;
		System.out.println(flag);
		
		String s1 = "zhangsan";
		String s2 = "zhangsan";
		
		System.out.println(s1==s2);
		System.out.println(s1!=s2);
		
		//练习  对下面代码进行注释
		double d=10/3; 
		a=10/3;
		System.out.println(a==d);    //false     整数除以整数为整数 所以为TRUE
		System.out.println(a);    //3
		System.out.println(d);    //不能输出,数据溢出    同上 double强行赋值 3.0
		
		d=10/3.0;  
		a=10/3;
		System.out.println(a==d);    //true    false
		System.out.println(a);    //3
		System.out.println(d);    //3    3.333333335
		
		System.out.println("hello"!="hello"); //false
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值