阅读时间约 12 分钟

Java-Phase01-Chapter02

变量+“+”+数据类型+编码+数据类型转换

Posted by LuckyE on March 4, 2025
Java

Chapter02

变量+“+”+数据类型+编码+数据类型转换

1.变(变化)量(值)

变量=变量名+值+数据类型

变量是程序的基本组成单位

  1. 声明变量 int a;
  2. 赋值 a = 60;

int double char String

变量先声明,后使用

2. +

  1. 当左右两边都是数值型时,则做加法运算
  2. 当左右两边有一方为字符串,则做拼接运算
  3. 从左到右运算

3.数据类型

Untitled

java的整型常量(具体值)默认为int型,声明long型常量须后加l或L

bit:计算机中的最小存储单位。

byte:计算机中基本存储单元,字节 1byte=8bit。

1.浮点

单精度float 4字节
双精度double 8字节

浮点数=符号位+指数位+尾数位

Java的浮点型常量(具体值)默认为double型,声明float型常量,须后加f或‘F’

//浮点数陷阱

		double num1 = 2.7;
		double num2 = 8.1/3;
		System.out.println(num1);
		System.out.println(num2);
		//2.7
		//2.6999999999999997
//应该是以两个数的差值的绝对值在某个精度范围内判断
错误的
if (num1 == num2){
	 System.out.println("相等");
}

正确的
System.out.println("相等" + Math.abs(num1 - num2));

2.字符类型

字符常量用’’单引号 字符串用””双引号

char c1 = 'a';
		char c2 = '\t';
		char c3 = '韩';
		char c4 = 97;
		char c5 = 'b';
		System.out.println(c1 + "\n" + c2 + "\n" + c3 + "\n" + c4 );
		
    //输出b对应的数字
		System.out.println((int)c5);   //98
System.out.println('a' + 10);      //107

3.布尔类型

java不可以用0或非0的整数代替false或true

4.基本数据类型转换

自动类型转换

精度小的类型自动转换为精度大的数据类型

Untitled

把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换.

  • byte,short,char三者可以计算,在计算时首先转换为int类型。
byte b2 = 1;
			short s1 = 1;
			short s2 = b2 + s1;
错误b2 + s1 运算之后为int类型不能赋值给short
即使是同类型(相同或混合)也不行
  • boolean 不参与类型的自动转换
  • 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
byte b1 = 1;
short b2 = 100;
int b3 = 200;
double b4 = 1.1;

double sum = b1 + b2 + b3 + b4;

强制类型转换

会损失数据精度

int n1 = (int)1.9;
System.out.println(n1);
结果为1

数据溢出

int j = 2000;
			byte c1 = (byte)j;
			System.out.println(c1);
结果为-48而不是2000

数据从 精度 大→ 小 ,需要强制转换

强转符号只针对于最近的操作数有效

int x =(int)10*3.5+6*1.5;
编译错误只是把10转换成了int类型与3.5相乘
变成double类型无法赋值给int
正确做法用小括号提升优先级
int x = (int)(10*3.5+6*1.5);

char类型可以保存int的常量值,但不能保存int的变量值,需要强转

char c1 = 100; ok
int m =100; ok
char c2 = m; 错误
char c3 = (char)m;

练习

判断是否能够通过编译
1. short s = 12; //ok
   s=s-9;//错误int->short
2. byte b = 10; //ok
   b =b +11;//错误int->byte
   b =(byte)(b+11); //正确,使用强转
3.char c = 'a'; //ok
  int i = 16; //ok
  float d = .314F; //ok
  double result = c + i + d; //ok float->double
4. byte b = 16; //ok
   short s = 14: //ok
   short t = s+b;1/错误

基本数据类型和String类型的转换

基本类型→字符串

int n1 = 100;
		float f1 = 1.1F;
		double d1 = 4.5;
		boolean b1 = true;

		String s1 = n1 + ""; 
		String s2 = f1 + ""; 
		String s3 = d1 + ""; 
		String s4 = b1 + ""; 

		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		System.out.println(s4);

字符串→基本类型 需要用到包装类

String s5 = "123";
		int num1 = Integer.parseInt(s5); 
		double num2 = Double.parseDouble(s5);
		float num3 = Float.parseFloat(s5);
		long num4 = Long.parseLong(s5);
		byte num5 = Byte.parseByte(s5);
		boolean num6 = Boolean.parseBoolean("true");
		short num7 = Short.parseShort(s5);

		System.out.println("num1: " + num1);
		System.out.println("num2: " + num2);
		System.out.println("num3: " + num3);
		System.out.println("num4: " + num4);
		System.out.println("num5: " + num5);
		System.out.println("num6: " + num6);
		System.out.println("num7: " + num7);

把字符串转成字符char -> 取字符串的第一个字符

//字符串转字符,取
		System.out.println(s5.charAt(0));

在将String类型转成基本数据类型时,要确保String类型能够转成有效的数据,可以把“123”,转成一个整数,但是不能把“hello”转成一个整数。

char c1 ='男';

char c2 = '女';

System.out.println(c1 +c2);

//得到男字符码值+女 字符码值


Testimonials

What readers say

先看读者反馈,再直接在当前页面继续讨论。公共留言需要 Waline 服务端;配置后访客只填昵称即可发布。

这类长文如果结构清楚,我会一路读到底。这里最好的地方是把概念、公式和代码示例放在同一篇里。

L
Lin 算法读者

数据库和工程文档的风格很实用,截图、SQL 和说明都能直接拿去复盘项目。

M
Mia 工程笔记党

强化学习相关文章密度很高,但排版如果更清楚,回看体验会更好。这个新版方向是对的。

R
Ryo 深夜学习者

我更喜欢能快速扫到标签、修改时间和文章重点的首页,现在这种卡片视图会比纯列表更容易选读。

C
Chen 知识整理控

代码块只要语言标识和层级做好,技术博客的专业感会立刻上来。

A
Ava 前端同行

评论区不用社交账号强绑定会更愿意留言,尤其是这种偏学习记录的网站。

N
Noah 匿名访客

Quick Identity

Pick a preset and leave a note

留言方式:先选择一个预设身份,再在下方输入评论。当前若显示“需要配置 Waline”,说明站点还缺少可写评论后端。

当前未选择预设身份

Live Discussion Waline 配置完成后,真实评论会加载在下方,移动端和主题切换会同步处理。
WALINE
Loading comments…