Java入门第一章第2节:Java数据类型知识 实验+图解讲解

简介


小编结合学习Java多年的经验和之前开发的项目心得,将从Java初学者的角度带领读者循序渐进地学习Java,从入门的基础知识讲解(亲身带大家敲出代码一步一步实践去验证,附截图)到类与对象、继承与多态、接口和内部类、字符串处理、线程与JDBC、数据库访问、集合框架,到JavaWeb(Spring boot)开发,最后穿插运用Java实战建立专属码农的通信实践

至于为什么写这些东西,原因有很多,于我个人而言这一年是自身的沉默期、希望沉淀沉淀自己的同时获取新的收获;其次就是过去两年中担任了两届的军训教官,学弟学妹们也到了学习Java的时候了,也是给大家做好榜样作用,也希望能够尽个人所能帮助更多的同学们等等,正是出于这样那样的初心,讲解的课程全都是免费开放的,如有讲错的地方欢迎读者指正!

继续第1节内容,我们现在开始讲Java数据类型、类型转换、输入输出以及常用句型

一、Java基础数据类型

1、基本数据类型也称作简单数据类型

Java语言有8种简单数据类型,分别是:

booleanbyte shortintlongfloatdoublechar

以上8种一般分为

逻辑类型:boolean

字符类型:char

整数类型:byte、short、int、long

浮点类型:float、double

2、逻辑类型(布尔类型)
常量: true false
变量 使用关键字 boolean 定义,定义时也可以赋给初值 ,如:
boolean   x;  boolean   tom_12;
boolean   x, tom, jiaFei ;
boolean   x = true, tom = false, jia F ei;
变量缺省值 false
注意:
Java 中的布尔型是一个独立的类型,不像 C 语言中的布尔型代表 0 1 两个整数,因此, Java 中的布尔类型不能用 0 1 代替
3、字符类型
常量: Java 使用 Unicode 字符集, Unicode 表中的字符就是一个字符常量 ,字符常量需使用单引号扩起,例如:
'A' 'b' '?' '!' '9' ' ' '\t ' ' ' 'δ'
Unicode :称为统一码或万国码,覆盖了世界上大部分文字,最多可识别 65536 个字符。
变量:使用关键字 char 来定义字符变量,如:
char  x=‘A’, tom=‘ ', jiaFei ;
对于 char 型变量,内存分配给 2 个字节。
内存中实际保存的是字符的 Unicode 码,因此 可用整数给 char 赋值 ,如:
char  x=97;
变量缺省值 ’\u0000’
4、整数类型
使用关键字 int 来定义 int 型整型变量,定义时也可以赋给初值,如:
int  x = 12, tom = -1230, height = 9898, number;
byte short int long 四种整数类型
变量缺省值 0

1int

内存分配给 4 个字节
取值范围: -2^ 31 ~2^ 31 -1

2byte

内存分配给 1 个字节
取值范围: -2^ 7 ~2^ 7 -1

3short

内存分配给 2 个字节
取值范围: -2^ 15 ~2^ 15 -1

4long

常量用后缀 L 来表示,例如 108L
内存分配给 8 个字节
取值范围: -2^ 63 ~2^ 63 -1
5、浮点类型:

分为floatdouble两种类型

float 型: 单精度浮点数
常量: 123.5439f 123.0f 2e40f 2 10 40 次方,科学计数法) 注:常量后有后缀 f F
变量:使用关键字 float 定义,如:
float x= 12.76f,tom=1234.987f;
内存分配给 4 个字节
8 位有效数字
取值范围: 10 -38 ~10 38 -10 38 ~-10 -38
double 型: 双精度浮点数
常量: 12389.5439d d 可以省略 ), 123.0 6e-140 6 10 -140 次方,科学计数法)
变量:使用关键字 double 定义,如:
double  x=12.76,tom=1234098.987;
内存分配给 8 个字节
16 位有效数字

取值范围:10^-308~10^308

6、穿插一个小实验

在main中输入如下代码:

char chinaWord = '你' , japanWord = 'ぁ' ;
      int  p1 = 36328 , p2 = 38358 ;
      System.out.println("汉字\'你\'在unicode表中的顺序位置:" +(int)chinaWord);
      System.out.println("日语\'ぁ\'在unicode表中的顺序位置:"  +(int)japanWord); 
      System.out.println("unicode表中第" +p1+"位置上的字符是:" +(char)p1);
      System.out.println("unicode表中第" +p2+"位置上的字符是:" +(char)p2); 

如图所示

运行后的输出为:

上面的代码实验中,可以看到

"汉字\'你\'在unicode表中的顺序位置:" +(int)chinaWord

"unicode表中第" +p1+"位置上的字符是:" +(char)p1

即对原本是char类型的chinaWord使用int对其进行输出,得到其在Unicode中的位置

同样地,对原本是int的转换后输出了字符char类型

这里就涉及到了数据类型的基本转换:

二、类型转换

概念:把一种基本数据类型变量的值赋给另一种基本类型变量时,就涉及到数据类型转换

基本类型数据的下列类型会涉及到数据转换,不包括逻辑类型和字符类型。我们将这些类型按 精度从“低”到“高” 排列了顺序:
byte  short  int  long  float  double

为什么是这样的顺序?

原因是确保转换后数据不会因为溢出而发生数据丢失(以前美国的航天飞机发生爆炸就是因为这个),范围小的(精度低)转为范围大的,就能全额吸收,毕竟小的能被大的包住嘛~

1、隐式转换
级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换( 隐式转换 ),例如:

1float x=100;

  如果输出x的值,结果将是100.0

2int x=50;

  float y;

  y=x;

  如果输出y的值,结果将是50.0

2、显式转换
级别高的变量的值赋给级别低变量时,必须使用显式类型转换。 显式转换 的格式:

(类型名)要转换的值

例如:

        int x=(int)23.89;

        long y=(long)34.98F;

        输出x,y的值将是2334

强制转换运算可能导致精度的损失
3、转换溢出
当把一个整数赋值给一个 byte short int long 型变量时, 不可以超出这些变量的取值范围 ,否则会导致溢出。例如:

  byte  a = (byte) 128;

  byte  b = (byte) (-129);

  那么ab得到的值分别是-128127

至于溢出的结果如何解释,这个属于计算机编译原理的知识了,就是补码和机器代码的表示;现在搞不懂也没关系,等学了编译原理就理解了,而且这个对于我们来说影响不大

4、穿插一个小实验

在main中输入以下代码:

int c=2200;   
       long d=8000;
       float f;
       double g=123456789.123456789;
       c=(int)d;
       f=(float)g;   //导致精度的损失.
       System.out.print("c=  "+c);   
       System.out.println("  d=  "+d); 
       System.out.println("f=  "+f); 
       System.out.println("g=  "+g); 

如图所示:

运行后的输出为:

三、数据类型的基本包装类

1、自带封装的类
Java提供了对基本数据类型进行封装的类,分别是 Byte Integer Short Long Float Double Character。
提供了一些类方法实现对基本类型数据的操作。

例如代码:

Integer a=new Integer(1100);
			Integer b=2200;  //自动装箱
      		int c=a.intValue();
      		int d=a;   //自动拆箱
			int e=Integer.parseInt("2200");
			System.out.println("a=  "+a);   
      		System.out.println("b=  "+b); 
      		System.out.println("c=  "+c); 
      		System.out.println("d=  "+d); 
	  		System.out.println("e=  "+e); 

如图: 

运行结果是:

2、Java默认变量的值
整    型: 0
浮点型: 0.0
布尔型: false(这个遇到的比较多,需要留个心眼)
字符型: \u0000
对    象: null
3、Java数值的默认类型
整型常量: int
浮点常量: double
long 型常量:整数后加 L
float 型常量:数字后加 f F

四、输入输出

前几次的代码都是不用敲键盘就出结果了,看似很没意思,于是乎输入要来了

1、输入基本类型数据

Scanner的对象可以读取用户从键盘输入的各种基本类型的数据。

java.util包中,使用时需import

通过Scanner对象调用下列方法,读取用户输入的基本类型的数据:

n nextBoolean () nextByte () nextShort () nextInt () nextLong () nextFloat () nextDouble ()
n next() :读取一个单词,以空格作为分隔符
2、输出基本类型数据

System.out.println() 输出数据后换行(这个用得多)

System.out.print() 输出数据后不换行

System.out.printf(“格式控制部分”,表达式1,表达式2….) 格式化输出,有%d%c%f%s%md %m.nf等格式符:(这个比较难,需要多练习)

n 例如: System.out.printf (“%d,%f”,12,23.78);
3、穿插个小实验

以上内容看着比较抽象,直接上代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        System.out.println("请输入若干个数,每输入一个数回车确认");
        System.out.println("最后输入数字0结束输入操作");
        Scanner reader=new Scanner(System.in);
        double sum=0;
        double x = reader.nextDouble();
        while(x!=0){
            sum=sum+x;
            x=reader.nextDouble();
        }
        System.out.println("sum="+sum);

    }
}

如图:

运行后,在控制台接着输入:1(回车)  2(回车)  3(回车)  0(回车)  得到

先是使用System.out.println()输出两句中文

然后使用reader.nextDouble()读入我们敲的数字

再用while循环做累加(跟C语言一样的原理哈)

4、小练习

设计一个类Computer,一个名为getTotal (int n)的方法,计算1~n的累加和并输出。

1+2+3+……+n

思路:跟People的类一样

 详细代码:

public class Computer {
    int n;
    int sum;
    void getTotal (int n){
        for(int i=0;i<=n;i++){
            sum+=i;
        }
        System.out.println(sum);
    }
}

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Computer leijia;
        leijia = new Computer();

        System.out.println("请输入一个数字n:");
        Scanner reader=new Scanner(System.in);
        leijia.n = reader.nextInt();
        leijia.getTotal(leijia.n);
    }
}

运行后:

搞定!!!

结束语:

以上是Java入门的第2步,希望大家喜欢

下一节开始讲常用句型,还会涉及一些算法

喜欢的可以点赞+关注哈 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边牧风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值