数据类型的转换
数据类型转换通常发生在运算、比较时
分两种情况:
- 自动转换(隐式转换)
- 强制转换(由开发人员给定命令去转换)
例:整型+浮点型
//当整型+浮点型时,要注意和的数据类型
int a = 1;//a的数据类型为整型
double b = 1.5;//b的数据类型为浮点型
double sum = a+b;//当a+b的和为小数,数据类型应为浮点型
例:整型+字符型
//3 还是 3 ,字符A转换成了65
System.out.print(3+'A')//值为68
//3 的数据类型为 int 占 4个字节
//A 的数据类型为 char 占2个字节
//所以最终的结果将char所占的字节与int所占字节比较,谁大最终的数据类型就为谁
规律:
- 如果是数字+字符,字符会转换成ASCII码对应的值
- 当出现转换,往往会往大数据类型方向转换
- 同类型运算得到该类型,不同类型运算得到大数据类型
例:同类型运算得到该类型,不同类型运算得到大数据类型
//前面5的数据类型为 int ,后面的2的数据类型为 int,最终得到的数据类型结果也为 int
System.out.print(5/2);//得到的值是商,2
//前面5的数据类型为 double ,后面的2的数据类型为 int,最终得到的数据类型结果为 double
System.out.print(5.0/2);//得到的值是商,2.5
强转:(目标数据类型)值
例:强转
//不会四舍五入
int number=(int)3.14;
System.out.print(number);//值为3
int number=(int)3.64;
System.out.print(number);//值为3
//从数组也能得到字符
int a = 65;
char result = (char)a;
System.out.print(result);//值为A
输出字符串拼接
字符串拼接使用 + 即可
int a = 97;//'A'
char result = (char) a;
//固定的字符用双引号引起来,变量不用双引号引起来,这样得到的结果变量始终在改变而固定的字符不会改变
System.out.print("数字"+a"得到的字符是"+result)
求圆柱体体积
//一个圆柱体底半径为5,高为10,打印出圆柱体的体积。公式:PI*r*r*h
//先定义半径值为5
int r = 5;
//再定义高的值为10
int h = 10;
//然后定义PI的值为3.14,因为PI为常量,本不能修改,但可以用final来定义PI的值
final double PI=3.14;
//将值赋给v
double v = PI*r*r*h;
//输出打印圆柱体的体积值
System.out.println(v);
拆数
//这个数的个位是4十位是3百位是2千位是1
//方法一:
//这种方法只能适用于当前值, number = 1234 的情况,当值改变时,a、b、c、d里面对应的数据也要改变
int number=1234;
int a=1234%1230; // 除1230 取余 4 得到个位
int b=1234%1204/10; // 除1204 取余 30 再用余数 30除10 得到十位
int c=1234%1034/100; // 除1034 取余 200 再用余数 200除10 得到百位
int d=1234/1234; // 除1234 取商 1 得到千位
System.out.println("这个数的个位是" + a + "十位是" + b + "百位是" + c + "千位是" + d);
//方法二:
//这种方法是先对 number 取余再除,且数据可以是随机数,下面以1234为例
Scanner scanner = new Scanner(System.in); //定义输入语句
System.out.println("请输入一个数:"); // 提示用户输入数据
int number= scanner.nextInt(); // 接收来的数据放进 变量number 里
int a = number % 10; // 对用户输入的数据1234 除10 取余 得到个位(1234 % 10 = 123.4 , 取余 [%10 则为取小数点后一位])
int b = number % 100 / 10;// 对用户输入数据 除100取模 得到两位数的余数,再用余数除10 取商 得到十位 第一步: 1234 % 100 即 1234 / 100 取余 得到一个两位数的余数 34 第二步 用 34 除10 取商 即 34 / 10 取商 得到十位为3
int c = number % 1000 / 100;// 对用户输入数据 除1000取模 得到三位数的余数,再用余数除100 得到百位 第一步: 1234 % 1000 即 1234 / 1000 取余 得到一个两位数的余数 234 第二步 用 234 除100 取商 即 234 / 10取商 得到百位为2
int d = number / 1000; //对 number 的值进行除法,取商 得到千位
System.out.println("这个数的个位是" + a + "十位是" + b + "百位是" + c + "千位是" + d);
//方法三:
//这种方法是先对 number 进行除法再取余,且数据可以是随机数,下面以1234为例
Scanner scanner = new Scanner(System.in); //定义输入语句
System.out.println("请输入一个数:"); // 提示用户输入数据
int number= scanner.nextInt(); // 接收来的数据放进 变量number 里
int a = number % 10; // 对用户输入的数据1234 除10 取余 得到个位(1234 % 10 = 123.4 , %10 则为取小数点后一位)
int b = number / 10 % 10; // 对用户输入数据1234 除10 取商(1234 / 10 取商为 123 ) 然后%10[再除10] 取余(123 % 10 = 12.3 取余,取小数点后一位)得到十位
int c = number / 100 % 10;// 对用户输入数据1234 除100 取商(1234 / 100 取商为12)然后%10[再除10] 取余(12 % 10 = 1.2 取余,取小数点后一位)得到百位
int d = number / 1000;//对 number 的值进行除法,取商 得到千位
System.out.println("这个数的个位是" + a + "十位是" + b + "百位是" + c + "千位是" + d);
输入
输入需要引入一个类Scanner
//有一个 Scanner 类型的变量叫做 scan ,能够接收输入,注意区分大小写
Scanner scan = new Scanner(System.in); //定义输入语句
System.out.println("请输入一个数:"); //提示用户,让他干某件事情
int number = scan.nextInt(); //接收来的数据放进变量number里
System.out.println("你输入的是:"+number);
- 接收整数
scan.nextInt(); - 接收字符串,比如接收他的名字
scan.next(); - 接收小数,
scan.nextDouble();
分支
默认从上往下执行,但有时同样也会需要程序走分支条件、重复操作
if
if是一个单分支语句
//语法
if(boolean 为真){
// 做....
}
if else
if else为双分支语句
//语法
if(boolean 为真){
// 做...
}else{
//否则就...
}
//例:输入的是否为 7 的倍数
Scanner scanner = new Scanner(System.in); //定义输入语句
System.out.println("请输入7的倍数"); // 提示用户输入数据
int bs = scanner.nextInt(); //接收来的数据放进变量bs里
//判断是否为 7 的倍数
if (bs % 7 == 0){
System.out.println("是7的倍数");
}else{
System.out.println("不是7的倍数");
}
例:输入一个3位数,判断是否为自恋数
//输入一个3位数,判断是否为自恋数(水仙花数) 个位立方+十位立方+百位立方 = 数字本身 (153 370 371)
Scanner scanner = new Scanner(System.in); // 定义一个接收输入的语句
System.out.println("请输入一个3位数"); //提示用户输入
int number = scanner.nextInt(); // 将用户输入的变量放入 number 中
int a = number % 10; // 对于输入的数字 即 abcd %10 = abcd / 10 取余 得到余数d,即个位
int b = number / 10 % 10; // 对于输入的数字 先除10取商 即 abcd /10 取商得到abc,再用abc%10 即abc % 10 = abc / 10 取余 得到余数c,即十位
int c = number /100 % 10; // 对于输入的数字 先除100取商 即 abcd /100 取商得到ab,再用ab%10 即ab % 10 = ab / 10 取余 得到余数b,即百位
if( number == a * a * a + b * b * b + c * c * c ){ // 判断数字本身是否等于各位立方+十位立方+百位立方
System.out.println("是一个自恋数");
}else{
System.out.println("不是一个自恋数");
}
//先进行判断用户输入的数据是否为三位数,是则判断是否为自恋数,否则输出打印语句
Scanner scanner = new Scanner(System.in); // 定义一个接收输入的语句
System.out.println("请输入一个数"); //提示用户输入
int number = scanner.nextInt(); // 将 用户输入的变量放入 number 中
// 先判断用户是否输入的是一个3位数
if( number >= 100 && number <= 999){
//是一个3位数
int a = number % 10; // 对于输入的数字 即 abcd %10 = abcd / 10 取余 得到余数d,即个位
int b = number / 10 % 10;// 对于输入的数字 先除10取商 即 abcd /10 取商得到abc,再用abc%10 即abc % 10 = abc / 10 取余 得到余数c,即十位
int c = number /100 % 10; // 对于输入的数字 先除100取商 即 abcd /100 取商得到ab,再用ab%10 即ab % 10 = ab / 10 取余 得到余数b,即百位
if( number == a * a * a + b * b * b + c * c * c ){ // 判断数字本身是否等于各位立方+十位立方+百位立方
System.out.println("是一个自恋数");
}else{
System.out.println("不是一个自恋数");
}
}else{ //不是一个3位数
System.out.println("你输入的不是一个3位数");
}
例:逆序排序
Scanner scanner = new Scanner(System.in); // 定义一个接收输入的语句
System.out.println("请输入一个数"); //提示用户输入
int number = scanner.nextInt(); // 将 用户输入的变量放入 number 中
int a = number % 10; // 对于输入的数字 即 abcd %10 = abcd / 10 取余 得到余数d,即个位
int b = number / 10 % 10; // 对于输入的数字 先除10取商 即 abcd /10 取商得到abc,再用abc%10 即abc % 10 = abc / 10 取余 得到余数c,即十位
int c = number /100 ;// 对于输入的数字 先除100取商 即 abcd /100 取商得到ab,再用ab%10 即ab % 10 = ab / 10 取余 得到余数b,即百位
int d = a *100; // 将个位的模乘以100 得到 逆序的百位
int e = b *10;// 将十位的模乘以10 得到 逆序的十位
int f = c *1;// 将百位的模乘以1 得到 逆序的个位
int g = d + e + f; //将新得到的个位、十位、百位相加得到逆序数
System.out.println("逆序排序为:"+g); //输出逆序数
//简写
Scanner scanner = new Scanner(System.in); // 定义一个接收输入的语句
System.out.println("请输入一个数"); //提示用户输入
int number = scanner.nextInt(); // 将 用户输入的变量放入 number 中
int a = number % 10; // 对于输入的数字 个位取模
int b = number / 10 % 10; // 对于输入的数字 十位取模
int c = number /100 ; // 对于输入的数字 百位取模
int newNumber = a *100 + b*10 + c; // 对于 8、9、10行代码的简写
System.out.println("逆序排序为:"+newNumber); //输出逆序数
例:判断用户是否输入的为回文数 个位等于万位,十位等于千位 例:12321
//判断用户是否输入的为回文数 个位等于万位,十位等于千位 例:12321
Scanner scanner = new Scanner(System.in); // 定义一个接收输入的语句
System.out.println("请输入一个数"); //提示用户输入
int number = scanner.nextInt(); // 将 用户输入的变量放入 number 中
if(number >= 1000 && number <= 99999){ //判断是否输入的是一个五位数
int a = number % 10; // 对于输入的数字 即 abcde %10 = abcde / 10 取余 得到余数e,即个位
int b = number / 10 % 10; // 对于输入的数字 先除10取商 即 abcde /10 取商得到abcd,再用abcd%10 即abcd % 10 = abcd / 10 取余 得到余数d,即十位
int c = number /100 % 10; // 对于输入的数字 先除100取商 即 abcde /100 取商得到abc,再用abc%10 即abc % 10 = abc / 10 取余 得到余数c,即百位
int d = number /1000 % 10; // 对于输入的数字 先除1000取商 即 abcde /1000 取商得到ab,再用ab%10 即ab % 10 = ab / 10 取余 得到余数b,即千位
int e =number / 10000; //对 number 的值进行除法,取商 得到万位 即abcde /10000 取商得到a
if(a == e && b == d){ // 判断个位是否和万位相等,十位是否和千位相等
System.out.println("是一个回文数");
}else{
System.out.println("不是一个回文数");
}
}else{
System.out.println("你输入的不是一个五数");
}
\