Java基础语法-第二节-基础数据类型

变量的分类-按数据类型

  • 对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分配了不同大小的内存空间

变量的分类-按声明的位置不同

  • 在方法体外,类变量声明的变量称为成员变量
  • 在方法体内部声明的变量称为局部变量。

  • 注意:二者在初始化值方便的异同
    • 同:二者都有生命周期
    • 不同:局部变量除形参外,需显式初始化

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

  • Java各整数类型有固定的表数范围和字段长度,不受具体OS(操作系统)影响,以保证Java程序的可移植性。
  • Java的整型变量默认为int型,声明long型常量须后加"l"或"L"
  • Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long

  • 1MB = 1024KB ,1KB = 1024B, 1B = 1byte
  • bit:计算机中最小存储单位。byte:计算机中基本存储单元
//1.整型:byte(1字节=8bit) / short(2字节) / int(4字节) / long(8字节)
//① byte范围:-128~127
byte b1 = 12;
byte b2= -128;
//b2=128;超出范围编译不通过
System.out.println(b1);
System.out.println(b2);
//② 声明long类型变量,必须以"l"或"L"结尾。通常写L结尾容易识别
short s1 = 128;
int i1 = 1234;
long l1= 12344L;
System.out.println(l1);
//③ 通常,定义整型变量时,使用int型

浮点类型:float,double

  • 与整数类型类似,Java浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响

  • 浮点型常量由两种表现形式

    • 十进制数形式:如5.12 512.0f .512(必须有小数点)

    • 科学计数法形式:如5.12e2 512E2 100E-2

  • float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求

  • double:双精度,精度是float的两倍。通常采用此类型

  • Java的浮点型常量默认为double型,声明float型常量,须在后面加"f"或"F"

//2.浮点型:float(4字节)/double(8字节)
//① 浮点型,表示带小数点的数值
//② float表示数值的范围比long还大
double d1 = 123.3;
float f1 = 12.3F;
//③ 定义float类型变量时,变量要以"f"或"F"结尾
System.out.println(f1);
//④ 通常,定义浮点型变量时,使用double型

字符类型:char

  • char型数据用来表示通常意义上“字符”(2字节)

  • Java中所有字符都是用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符

  • 字符型变量的三种表现形式

  • 字符常量使用单引号('')括起来的单个字符,例如:char c1 = 'a'; char c2 = '中';char c3 = '9';

    • Java中还允许使用转义字符'\'来将其后面的字符转变成字符型常量。例如:char c3 = '\n'; '\n'表示换行符

    • 直接使用Unicode值来表示字符型常量:'\uXXXX'。其中,XXXX代表一个十六进制整数。如:\u000a表示\n
  • char类型是可以进行运算的。因为它都对应有Unicode码

//3.字符型:char(1字符=2字节)
//① 定义char类型变量,通常使用一对'',内部只能写一个字符
char c1 = 'a';
//编译不通过
//c1 = 'AB';
System.out.println(c1);
char c2 = '1';
char c3 = '中';
char c4 = 'ぇ';
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
//② 表示方式:1.声明一个字符 2.转义字符 3.直接使用Unicode值来表示字符型常量
char c5 = '\n';//换行符
c5 = '\t';//制表符,相当于Tab键
System.out.print("hello"+c5);
System.out.println("world");
char c6 = '\u0043';
System.out.println(c6);

布尔型:boolean

//4.布尔型:boolean
//① 只能取两个值之一:true,false
//② 常常在条件判断,循环结构中使用
boolean bl1 = true;
System.out.println(bl1);
boolean isMarried = true;
if(isMarried){
    System.out.println("你就不能参加\"单身\"party了!\\n很遗憾");
}else{
    System.out.println("你要多谈谈女朋友");
}		

字符串类型:String

  • String不是基本数据类型,属于引用数据类型

  • 使用方式与基本数据类型一致。例如:String str = "abcd";

  • 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。例如

    str = str + "xyz";
    int n = 100;
    str = str + n;
    //String类型变量的使用
    String str = "Hello World!";
    System.out.println(str);
    String str2 = "a";
    String str3 = "";
    int number = 1001;
    String numberStr = "学号:";
    numberStr = numberStr + number;
    System.out.println(numberStr);
    boolean info = true;
    numberStr = numberStr + info;
    System.out.println(numberStr);
    //*************************
    //练习一
    char ch = 'a';//编码位置是97
    int num = 10;
    String strs = "hello";
    System.out.println(ch + num + strs);//107hello
    System.out.println(ch + strs + num);//ahello10
    System.out.println(ch + (num + strs));//a10hello
    System.out.println((ch + num) + strs);//107hello
    System.out.println(strs + num + ch);//hello10a
    //练习二
    System.out.println("*	*");//*       *
    System.out.println('*' + '\t' + '*');//93
    System.out.println('*' + "\t" + '*');//*       *
    System.out.println('*' + '\t' + "*");//51*
    System.out.println('*' + ('\t' + "*"));//*       *
    

基本数据类型转换

  • 自动类型转换 :容量小的类型自动转换成容量大的数据类型。数据类型按容量大小排序为:

    • 有多种类型的数据混合运算时,系统首先自动将书友数据转换成容量大的那种数据类型,然后再进行计算。
    • byte,short,char之间不会相互转换,它们三者在计算时首先转换成int类型
    • boolean类型不能与其他数据类型运算
    • 当把任何基本数据类型的值与字符串(String)进行来连接运算(+)时,基本数据类型的值将自动转换成字符串类型(String)
    //自动类型转换
    byte by1 = 2;
    int in1 = 129;
    //编译不通过。
    //byte by2 = by1 + in1;
    int in2 = by1 + in1;
    long lo1 = by1 + in1;
    System.out.println(in2);
    float fl1 = by1 + in1;
    System.out.println(fl1);
    short sh1 =123;
    double do1 = sh1;
    System.out.println(do1);
    
  • 强制类型转换

    • 自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度丢失或溢出,要格外注意。
    • 通常,字符串不能直接转换成基本数据类型,但可以通过基本数据类型对应的包装类则可以实现把字符串转换成基本数据类型。
    • 如:String a = "43";int i = Integer.parseInt(a);
    • boolean类型不可以转换成其他数据类型
    //强制类型转换
    double dou1 = 12.9;
    //精度损失举例1
    int int1 = (int)dou1;//截断操作
    System.out.println(int1);
    //没有精度损失
    long lon1 =123;
    short sho1 = (short)lon1;
    //精度损失举例2
    int int2 = 128;
    byte byt1 = (byte)int2;
    System.out.println(byt1);//-128
    

    总结

Java定义的数据类型
一,变量按照数据类型来分:
	基本数据类型:
		整型:byte/short/int/long
		浮点型:float/double
		字符型:char
		布尔型:boolean
	引用数据类型:
		类(class)
		接口(interface)
		数组(array)	
二,变量在类中声明的位置
	成员变量
	局部变量
三,基本数据类型之间的运算规则
前提:这里讨论的只是7中基本数据类型变量间的运算。不包含boolean类型的
说明:容量大小指的是表示数的范围的大小。比如:float容量要大于long的容量
	1.自动类型提升:
		结论:当容量小的数据类型的变量与容量大的数据类型的变量运算时,结果自动提升为容量大的
		byte ,char , short --> int --> long --> float --> double
		特别的:当byte ,char , short三种类型的变量做运算时,结果为int型
	2.强制类型转换:自动类型提升的逆运算
		1.需要使用强转符:()
		2.注意点:强制类型转换,可能导致精度损失。
四,String类型变量的使用
	1.String属于引用数据类型,翻译为:字符串
	2.声明String类型变量时,使用一对""
	3.String可以和8中数据类型变量做运算,且运算只能是连接运算:+
	4.运算的结果仍然是String类型
	5.判断+是否为连接运算的方法是看+两边是否有字符串类型的值
posted @ 2020-10-27 13:38  木子川  阅读(172)  评论(0编辑  收藏  举报