Java小白的成长(基础篇)2

  今天,就来探讨一下基本的数据类型,以及,数据类型之间的转换;

一、基本的数据类型

整型 浮点型 字符型 布尔型

1.整型

byte -1字节  -2^7-2^7-1 -128-127 负数----1取反
1Byte=8bit 按理说,它的范围应该是256,但因为存在负数的问题,所以会按一半一半划分范围,负数范围为-128~-1之间,正数应该为1~128之间,但是这里要注意缺少0,所以正数的正确范围为0~127之间。所以byte的范围为-128~127。
同理
short-2字节   -2^15-2^15-1
int    -4字节   -2^31-2^31-1
long-8字节    -2^63~2^63-1

整型的运算过程中

为了大家更加方便了解,咋们举一个栗子


public class Test01{

    public static void main(String[] args){

        byte a1=1;

        byte a2=2;

        byte a3=a1+a2;

        System.ot.println(a3);

    }

}

 

试着运行这个代码,你会发现,它出现的内容是不兼容的类型,从int转换到Byte可能有损失;为什么会出现这种情况呢 ,1和2默认的都是Int类型,而a1,a2,a3都是byte类型,所以会报错,要怎么解决这种问题呢,咋们可以强制转换,在a1+a3前面加上Byte,我们来看看修改后的代码。

public class Test01{

    public static void main(String[] args){

        byte a1=100;

        byte a2=100;

        byte a3=(byte)(a1+a2);

        System.ot.println(a3);

    }

}

在运行一遍这个代码就可以运行结果了;

运行的结果是

-56

咋们分析分析,为啥会这样,为啥不是200,Byte的取值范围是在-128-127,200已经超过了它的范围,但它还是输出了,这就是强制转换的结果;

200=1100 1000   然后-1=1100 0111 然后进行取反 = 0011 1000得到的就是-56

 

同理Short和long也是这样的,在详细说明一下

public class Test02{

    public static void main(String[] args){

        Short a1=1;

        short a2=2;

        short a3=a1+a2;

        System.ot.println(a3);

    }

}

运行之后,它依旧是报错的,报错的原因依旧是:不兼容;要将其改为正确的代码,道理同byte一样,在a1+a3整体前面加上short进行强制转换;

public class Test02{

    public static void main(String[] args){

        Short a1=1;

        short a2=2;

        short a3=(short)(a1+a2);

        System.ot.println(a3);

    }

}

所以,我们可以总结出一下道理来,整型的默认是Int型,其他型想要输出的时候,必须要进行强制转换;

2.浮点型

float型4个字节

double8个字节

浮点型的默认是Double型,输出的时候,若不是Double需要进行强制转换

 

class test3{
    public static void main(String[] args){
    float f=3.14;
    System.out.println(f)
}

}

这个代码,显而易见,他是不能输出的;错误原因呢,也是不兼容,想要输出,在float类型的常量后面+F;

class test3{
    public static void main(String[] args){
    float f=3.14F;
    System.out.println(f)
}

}

这样就可以输出了;

3.字符型

char 2字节 0-65536 它为啥没有负数,因为字符没有负的

计算机是怎么存字符的呢?字母、数字、标点;

public class Test4{
    public static void main(String[] args){
        char c1='a';
        System.out.println(c1+1);//98  c1后的一个字符编码
        System.out.println(c1-1);//96  c1前的一个字符编码
        System.out.println((char)('我'+1));//字典中,我后面的那个字 戒
    }
}

4.布尔型

它的运行结果只有true、false

二、i++ 和 ++i

 对于i++和++i,相信咋们都知道是i++是先运行后+1,++i是先+1,在运行

咋们就来细细说一下i++,可以这样理解,i++是披着羊皮的狼,他在遇到羊之前,都是一匹狼,在遇到羊之后,他就显示出了它的本来的面目,好比说,在运行一个程序,i++本来已经是2,但他外面还披着1的外皮,在进行运算(赋值,调用,输出)中任意一个之后,他的那层外皮就掉了,2显示出来,2去参与运算。

在学术一点就是:

1.先开辟一个临时存储区
2.将I的值复制到存储区
3.i自身+1
4.临时存储区的值等待被调用(赋值,输出,调用);

来,举个例子

public class Test5{
    public static void main(String[] args){
        int i=3;
        i++;
        System.out.println(i);//4
        System.out.println(i++);//4
        int j=i++;
        System.out.println(j);//5
        System.out.println(i);//6
        i=i++;
        System.out.println(i);//6
        i=i++;
        System.out.println(i);//6
    }
}

第一个输出想必大家都懂,第二个输出为4,此时i进行输出,i变成了5,在 j=i++的时候,将5赋予J,所以,第三个输出为5,i此时也参与了运算,所以i的值在第四个输出的时候变成了6;i=i++,就是将6赋给了i,所以第五个和第六个的输出都为6;

三、实战演练

3.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换成为华氏温度,并且显示结果。转换公式: 华氏温度 = (9/5) * 摄氏温度 + 32;

步骤:

1.输入摄氏温度

2.根据题目给的公式进行转换

import java.util.Scanner;
public class Test1{
    public static void main(String[] args) {
     Scanner input = new Scanner(System.in);
          System.out.println("请输入摄氏温度:");
          double z = input.nextDouble();
          double z1 = (9.0/5)*z+32;
         System.out.println("摄氏温度为:"+z+"转换为华氏温度为:"+z1);
    }
    }

 

3.2(计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱的体积:

  • 面积=半径* 半径 * p
  • 体积= 面积*高
  • 步骤:
  • 1.输入圆柱体的半径,高
  • 2.算出底面积,根据r*r*h
  • 3.算体积,根据算出来的底面积
  • import java.util.Scanner;
    public class Test2{
        public Static void main(String[] args){
            Double pi = 3.1415926;
            Scanner input = new Scanner(System.in);
            System.out.println("请输入圆柱体的半径:");
            Double r = input.nextDouble();
            Scanner input1 = new Scanner(System.in);
            System.out.println("请输入圆柱体的高:");
            Double h = input1.nextDouble();
            Double area = r*r*pi;
            Double V = area * h;
            System.out.println("圆柱体的面积是:"+area);
            System.out.println("圆柱体的体积是:"+v);
        }
    }
    3.3  (求一个整数的各个数的和)编写程序,读取一个在 0 和 1000 之间的整数,并将该整数的各位数字相加。例如:整数是 932 , 各位数字之和为 14。
  •   步骤:
  •    1.输入一个整数
  • 2.整数%10得到个位数
  • 3.整数/10%10得到十位数
  • 4.整数/10/10得到百位数
  • 5.将个位数,十位数,百位数相加
import java.util.Scanner;
public class Test3{
    public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    System.out.println("请输入一个0-1000之间的整数");
    int N = in.nextInt();
    int N1 = N % 10;
    int N2 = N /10 %10;
    int N3 = N2%10;
    int sum = N1+N2+N3;
    System.out.println("这个数的各个数字之和是:"+sum);
    }
}

3.4(当前时间)程序清单2-7给出了显示当前格林威治时间的程序。修改这个程序,提示用户输入相 对于 GMT 的时区偏移量,然后显示在这个特定时区的时间。

步骤:1.先获取1970年1月1日到现在的总的毫秒数

2.总毫秒数/1000得到总秒数   总秒数%60得到当前的秒数

3.总秒数/60得到总分钟数   总分钟数%60得到当前得分钟数

4.总分钟数/60得到总小时数 (总小时候数+其他区域)%24得到当地的时间

import java.util.Scanner;
public class Test4{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("请输入时区的偏移量:");
        int timePianyi = in.nextInt();
        Long totalMilliseconds = System.currentTimeMillis();/*获取1970年到
        现在的毫秒数;*/
        long totalseconds = totalMilliseconds / 1000;/*得到总秒数*/
        long currenSeconds = totalseconds % 60;/*得到当前的秒数*/
        long totalMinutes = totalseconds / 60;/*得到总分钟*/
        long currentMinutes = totalMinutes % 60;/*得到当前的分钟数*/
        long totalHours = totalMinutes /60;/*得到当前的小时总数*/
        long currentHour = (totalHours + timePianyi) % 24;
        System.out.println("当前的时间是:"+currentHour+":"+currentMinutes
        +":"+currenSeconds);
    }
}

3.5

(财务应用程序:复利值)假设你每月向银行账户存100美元,年利率为5%,那么每月利率是 0.05/12=0.004 17。

第一个月之后,账户上的值就变成:

100 * (1 + 0.00417) = 100.417

第二个月之后,账户上的值就变成:

(100 + 100.417) * (1 + 0.00417) = 201.252

第三个月之后,账户上的值就变成:

(100 + 201.252) * (1 + 0.00417) = 302.507

依此类推。编写程序显示六个月后账户上的钱数。(在编程练习题 5.30中,你将使用循环来简化这里的代码,并能显示任何一个月之后的账户值。)

数据:月利率0.00417.每月的存款金额100,  要求输出每个月存款100的总金额

步骤:1.算出第一个总金额

2.其余的每个月,皆是 (本月的金额+上月的总金额)*月利息

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入你的每月存款金额:");
        double Z = in.nextDouble();
        double rLiXi= 1 + 0.00417;
        double Month1 = Z * rLiXi;
        double Month2 = (Z + Month1) * rLiXi;
        double Month3 = (Z + Month2) * rLiXi;
        double Month4 = (Z + Month3) * rLiXi;
        double Month5 = (Z + Month4) * rLiXi;
        double Month6 = (Z + Month5) * rLiXi;
        System.out.println("6个月后账上余额为:" + Month6);
    }
}

3.6(几何:两点间距离)编写程序,提示用户输人两个点(x1,y1)和(x2,y2),然后显示两点间的距离。计算两点间距离的公式:(x2-x1)^2 + (y2-y1)^2 结果的平方根,注意:可以使用Math.pow(a,0.5) 来计算。

数据:两个点的座标,求解两点之间的距离

步骤:1.输入两个点的座标

2.两点之间的距离公式(x-x1)^2+(y-y1)^2

3.开平方,这里用到 Math.pow(  ,0.5)这是开根号 平方就是Math.pow(  ,2)

import java.util.Scanner;
public class Test6{
    public static void main(String[] args){
       Scanner input = new Scanner(System.in);
        System.out.print("Enter x1 and y1: ");
        System.out.print("Enter x2 and y2: ");
        double b=input.nextDouble();
        double d=input.nextDouble();
        double a=input.nextDouble();
        double c=input.nextDouble();        
        double  y= (b-a)*(b-a)+(d-c)*(d-c);
        double distance = Math.pow(y, 0.5);//power 求开平方(0.5)
        System.out.print("The distance the two points is " + distance);
    }
}
 

 

3.7(几何:三角形的面积)编写程序,提示用户输人三角形的三个点(x1,y1)、(x2,y2) 和 (x3,y3), 然后显示它的面积。计算三角形面积的公式是:

s=(边1+边2+边3)/2

面积: (s * (s - 边1)(s - 边2)(s - 边3))^0.5

数据:三个点的座标  求三角形的体积 

步骤:1.输入三个点的点座标

2.求出两两点之间的距离,得到的是三条边的长度

3.算出三角形的边长

4.根据边长与面积之间的公式求出三角形的面积

import java.util.Scanner;
public class Test7{
    public static void main(String[] args){
       Scanner input = new Scanner(System.in);
        System.out.print("Enter x1 and y1: ");
        System.out.print("Enter x2 and y2: ");
        System.out.print("Enter x3 and y3: ");
        double b=input.nextDouble();
        double d=input.nextDouble();
        double a=input.nextDouble();
        double c=input.nextDouble(); 
        double e=input.nextDouble();
        double f=input.nextDouble();
         double  y= (b-a)*(b-a)+(d-c)*(d-c);
         double  y1= (b-e)*(b-e)+(d-f)*(d-f);
         double  y2= (a-e)*(a-e)+(c-f)*(c-f);
         double dis1 = Math.pow(y, 0.5);
         double dis2 = Math.pow(y1, 0.5);
         double dis3 = Math.pow(y2, 0.5);
         double S = (dis1+dis2+dis3)/2;
         double are = S*(s-dis1)*(S-dis2)*(S-dis3);
         double area = Math.pow(are,0.5);
         System.out.println("三角形的面积为:"+area);
         }
         }

啊,用一张图表示现在自己的心情

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章