学习笔记

192 阅读8分钟

数据类型的转换

数据类型转换通常发生在运算、比较时

分两种情况:

  • 自动转换(隐式转换)
  • 强制转换(由开发人员给定命令去转换)

例:整型+浮点型

  
  //当整型+浮点型时,要注意和的数据类型
  ​
  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所占字节比较,谁大最终的数据类型就为谁

规律:

  1. 如果是数字+字符,字符会转换成ASCII码对应的值
  2. 当出现转换,往往会往大数据类型方向转换
  3. 同类型运算得到该类型,不同类型运算得到大数据类型

例:同类型运算得到该类型,不同类型运算得到大数据类型

  
  //前面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);//值为3int 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("你输入的不是一个五数");
          }

\