Java数据类型和变量

  1. Java中数据类型有哪些?

    1. 基本数据类型(1字节等于8位)
      1. 数值型
        1. 整数型
          • byte(1字节)
          • short(2字节)
          • int(4字节)
          • long(8字节)
        2. 浮点型
          • float(4字节)
          • double(8字节)
      2. 字符型
        • char(2字节)
      3. 布尔型
        • boolean
    2. 引用数据类型
      1. 类(class)
      2. 接口(interface)
      3. 数组(String[] ss = new String[3]?
  2. Java中数据类型的转换?

    1. 低级到高级:(byte,short,char)–int–long–float—double

    2. 低级转高级:自动转换为高级的数据类型

      如:char转换为int时,会转换成对应的ascll码,int型的1转换成float型就直接加上小数部分为1.0f,因为(byte,short,char)是平级的,所以相互转换的时候要强制类型转换

    3. 高级转低级:强制类型转换,但是会丧失精度

      如:double型的3.14159转换成int型就会变成3,小数部分就直接丧失。

    4. 基础数据类型的包装类进行转换

      1. java共有六个包装类
        • 分别是Integer,Double,Long,Float ,Boolean,Character
        • 分别对应的基本数据类型是int,double,long,float,Boolean,char
  3. 成员变量和局部变量的区别?

    1. 共同点:都有生命周期
    2. 区别:
      1. 成员变量:声明在类里面的变量,生命周期一直到这个类被垃圾回收器回收。
        • 成员变量在声明的时候会有默认值,byte:0;short:0;int:0;long:0;float:0.0f;double:0.0;boolean:false;char:’’;String:null;
      2. 局部变量:声明在方法或代码块或形参里面的变量,声明周期到这个方法被调用完。
        • 局部变量使用前必须先初始化才能使用(形参除外),没有默认值。
  4. 思维特训

    1. 一列时速15英里的火车从洛杉矶出发,驶向纽约。另外一列时速 20英里的火车从纽约出发,驶向洛杉矶。如果一只鸟以每小时25 英里的速度飞行,在同一时间从洛杉矶出发,在两列火车之间往 返飞行,到火车相遇时为止,鸟飞了多远?

      分析:鸟的速度不变,所以鸟飞行的距离为火车开始到相遇的时间乘以鸟飞行的速度;而时间为洛杉矶到纽约的距离除以两火车的速度之和,所以鸟飞行的距离为鸟飞行的速度乘以洛杉矶到纽约的距离除以两火车的速度之和。

      设洛杉矶到纽约的距离为L,鸟飞行的距离为x,两火车开始到相遇用时为t;
            		t=L/(15+20)=L/35;
            		x=t*25=25*(L/35)=(5*L)/7;
      即,鸟飞行的距离为七分之五个洛杉矶到纽约的距离。	
      
    2. 有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐 是橘子与苹果混在一起。筐上的标签都是骗人的,(比如,如果 标签写的是橘子,那么可以肯定筐里不会只有橘子,可能还有苹果)你的任务是拿出其中一筐,从里面只拿一只水果,然后正确 写出三筐水果的标签。

      分析图:Java数据类型和变量

      代码实现:

      import java.util.Scanner;
      
      public class fruits {
      
          public static void main(String[] args){
          	Scanner sc = new Scanner(System.in);
          	System.out.println("请输入要从哪个框中抓水果,可为1,2,3");
          	int number = sc.nextInt();
          	System.out.println("请输入抓出了什么水果,可为苹果或橘子");
          	String name = sc.next();		
          
          	choose(name,number);	
          	
          }
          
          public static void choose(String name,int number){
          	String[] str1 = new String[]{"苹果","橘子","苹果和橘子"};
          	System.out.println("一开始的标签为:"+str1[0]+","+str1[1]+","+str1[2]);
          	System.out.println("当从第"+number+"框中拿出"+name+"时,");
          	if((name.equals(str1[0])&&number==1)||(name.equals(str1[0])&&number==2)||(number==3&&name.equals(str1[1]))){
          		System.out.println("正确的标签是"+str1[2]+","+str1[0]+","+str1[1]);
          	}else if((name.equals(str1[1])&&number==1)||(name.equals(str1[1])&&number==2)||(number==3&&name.equals(str1[0]))){
          		System.out.println("正确的标签是"+str1[1]+","+str1[2]+","+str1[0]);
          	}
          	
          }
      
      }
      
      

      运行截图:Java数据类型和变量