数据类型转换 :
对应类型的数据赋值给对应类型的变量
自动类型提升 :
小---->大 ===> 可以正常存放,但是可能会造成内存的浪费
强制类型转换 :
大---->小 ===> 不能发生,有可能会造成损失精度
小范围类型 变量名 = (小范围类型)大范围类型数据;
注意: 如果存储多种类型的数据参与运算,结果类型为参与运算的最大类型
如果结果类型为<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
}
}