第一章_Java基础语法(2)_数据类型+类型转换

一、常量

  • 1.常量概念
    • 在程序运行过程中,其值不可以发生改变的量
  • 2.常量分类
    • 字符串常量:用双引号括起来的多个字符(可以包含0个、一个或多个),例如"a"、“abc”、"中国"等
    • 整数常量:整数,例如:-10、0、88等
    • 小数常量:小数,例如:-5.5、1.0、88.88等
    • 字符常量:用单引号括起来的一个字符,例如:‘a’、‘5’、‘B’、'中’等
    • 布尔常量:布尔值,表示真假,只有两个值true和false
    • 空常量:一个特殊的值,空值,值为null,不可以在输出语句中直接打印(除空常量外,其他常量均可使用输出语句直接输出)
public class Demo1Constant {
	public static void main(String[] args) {
		System.out.println("你好,黑马程序员");
		System.out.println(123);
		System.out.println(12.3);
		System.out.println('a');
		System.out.println(true);
		System.out.println(false);
		System.out.println(5 > 10);
		//System.out.println(null); //null在输出语句中会报错
	}
}

二、变量

  • 1.什么是变量
    • 变量就是内存中的存储空间,空间中存储着经常发生改变的量(数据)
  • 2.变量的定义格式
    • 数据类型 变量名 = 数据值;
public class Demo1Variable {
	public static void main(String[] args) {
		// 格式:数据类型 变量名 = 数据值;
		
		// 整数类型变量
		int a = 10;
		System.out.println(a);
		
		// 小数类型变量
		double b = 12.3;
		System.out.println(b);
		
		// 字符类型变量
		char c = 'a';
		System.out.println(c);
		
		// 布尔类型变量
		boolean d = true;
		System.out.println(d);
	}
}

三、数据类型

  • 1.计算机存储单元
    • 我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位 (bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示
    • 而计算机中最基本的存储单元叫“字节(byte)”,通常用大写字母”B”表示,字节是由连续的8个位组成
  • 2.Java中的数据类型
    • Java是一个强类型语言,Java中的数据必须明确数据类型。在Java中的数据类型包括基本数据类型和引用数据类型两种

在这里插入图片描述

数据类型关键字内存占用取值范围
整数类型byte1-128~127
short2-32768~32767
int(默认)4-2的31次方到2的31次方-1
long8-2的63次方到2的63次方-1
浮点类型float4负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到3.402823E+38
double(默认)8负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308
字符类型char20-65535
布尔类型boolean1true,false

在java中整数默认是int类型,浮点数默认是double类型

四、变量的注意事项

  1. 在同一对花括号中,变量名不能重复
  2. 变量在使用之前,必须初始化(赋值)
  3. 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围
  4. 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容

五、键盘录入

  • 1.导包:import java.util.Scanner
  • 2.示例
import java.util.Scanner;

public class Demo1Scanner {
	/*
		步骤1: 导包, 需要写在class的上面,import java.util.Scanner;
		步骤2: 创建对象Scanner sc = new Scanner(System.in);只有sc可以改变, 其他属于固定格式
		步骤3: 使用变量接受数据int i = sc.nextInt();只有i变量可以改变, 其他属于固定格式
	*/
	public static void main(String[] args) {
		// 步骤2: 创建对象
		Scanner sc = new Scanner(System.in);
		// 步骤3: 使用变量接受数
		int a = sc.nextInt();
		System.out.println(a);
	}
}

六、标识符

  • 1.什么是标识符
    • 标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名
  • 2.Java中标识符的组成规则
    • 由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字
    • 不能使用java中的关键字作为标识符
    • 标识符对大小写敏感(区分大小写)
  • 3.java标识符的命名约定
    • 小驼峰式命名:变量名、方法名;首字母小写,从第二个单词开始每个单词的首字母大写
    • 大驼峰式命名:类名;每个单词的首字母都大写
    • 标识符的命名最好可以做到见名知意

七、类型转换

在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换

  • 1. 隐式转换
    • 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可
public class Demo1Conversion {
	/*
		隐式转换: 将数据类型中, 取值范围小的数据, 给取值范围大的类型赋值, 可以直接赋值
	*/
	public static void main(String[] args) {
		int a = 10;			// int 4个字节
		double b = a;		// double 8个字节
		System.out.println(b); //10.0
	}
}
  • 2.类型从小到大关系图
    在这里插入图片描述
  • 3.类型提升
    • 小的数据类型和大的数据类型运算,小的会提升为大的类型之后再进行运算
      • 整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型
      • boolean类型不能与其他基本数据类型相互转换
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2; 
// 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。
// 修改为:
int num = b1 + b2;
// 或者:
byte b3 = (byte) (b1 + b2);
  • 4.强制转换
    • 把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
    • 强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量
public class Demo2Conversion {
	/*
		强制转换: 把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
		简答理解: 大的给小的, 不能直接给, 需要强转
		格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
	*/
	public static void main(String[] args) {
		int a = 10;// int 4个字节
		byte b = (byte)a;// byte 1个字节,错误: 不兼容的类型: 从int转换到byte可能会有损失精度
		System.out.println(b);
		
		double num1 = 12.9;
		int num2 = (int)num1;
		System.out.println(num2);
	}
}
  • 5.类型转换案例
    • 解决方案:byte c = (byte)(a + b);
    • 常量优化机制:
      • 这里的3和4是两个常量, Java存在常量优化机制, 会在编译的时候就会让3和4进行相加, 然后会自动判断7是否在byte的取值范围内
        • 不在范围内: 编译出错
        • 在范围内: 通过编译
byte a = 3;
byte b = 4;
byte c = a + b; //错误。因为两个byte变量相加,会先提升为int类型
byte d = 3 + 4; //正确。常量优化机制
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无休止符

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

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

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

打赏作者

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

抵扣说明:

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

余额充值