当前位置: 首页 > article >正文

【韩老师零基础30天学会Java 】03章 变量

第三章 变量

1. 变量介绍

为什么需要变量?

变量是程序的基本组成单位
变量有三个基本单位:类型+名称+值

在这里插入图片描述
在这里插入图片描述

//1.定义变量
		int age =20;
		double score=88.6;
		char gender='男';
		String name='jack';

变量使用注意事项

  1. 变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同,比如:int 4r个字节,double 就是 8个字节]
  2. 该区域有自己的名称[变量名]和类型[数据类型]
  3. 变量必须先声明,后使用,即有顺序
  4. 该区域的数据可以在同一类型范围内不断变化
  5. 变量在同一个作用域内不能重名
  6. 变量=变量名+值+数据类型,这一点请大家注意。变量三要素

2. +号的使用

在这里插入图片描述

3. 数据类型🚩

在这里插入图片描述

int-4 byte-1 short-2 long-8
float-4 double-8
char-2 boolean-1
String不属于基本数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

面试题:浮点数是右什么组成的?

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

通常情况下,应该使用double型,因为它比float型更精确。

public class IntDetail{
	public static void main(String[] args){

		//浮点数使用陷阱:2.7和8.1/3 比较
		double num11=2.7;
		double num12=8.1/3;//2.7
		System.out.println(num11);//2.7
		System.out.println(num12);//2.6999999999999997
		if(num11==num12){
			System.out.println("相等");
		}

		//正确写法
		if (Math.abs(num11-num12)<0.000001){
			System.out.println("差值非常小,到规定的精度,认为相等");
		}
	}
}

得到一个重要的使用点:当我们对运算结果是小数的进行相等判断时,要小心❗❗❗
应该是以两个数的差值的绝对值,在某个精度范围类判断。❗❗❗
细节:如果是直接查询得到的小数或者直接赋值,是可以判断相等。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

public class IntDetail{
	public static void main(String[] args){
		char c4=97;
		System.out.println(c4);//结果:a
	}
}

在这里插入图片描述

单引号引起来的是字符,双引号是字符串❗
在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。

		char c4=97;
		char c5='a';
		System.out.println(c4);//结果:a
		System.out.println((int)c5);//结果:a

面试题:ASCII编码表一共有多少字符?

一共有128个字符,由一个字节表示,实际上一个字节可以表示256个字符,只用了128个。

Unicode编码表,字母和汉字统一都用两个字节表示。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用细节说❗❗❗
不可以0或非0的整数替代false和true,这点和C语言不同。

4. 编码

在这里插入图片描述

5. 数据类型转换

√ 介绍
当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型
这个就是自动类型转换。
√ 数据类型按精度(容量)大小排序为(背,规则)
在这里插入图片描述

自动类型转换注意和细节:

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
  2. 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时,就会报错,反之就会进行自动类型转换。
  3. (byte,short)和 char之间不会相互自动转换。
  4. byte,short,char 他们三者可以计算,在计算时首先转换为int类型
  5. boolean 不参与转换
  6. 自动提升原则: 表达式结果的类型自动提升为操作数中最大的类型。

在这里插入图片描述

强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。
使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。

		int n1=(int)1.9;
		int n2=2000;
		byte b1=(byte)n2;
		System.out.println("n1=" + n1);//结果:1(造成精度损失)
		System.out.println("b1=" + b1);//结果:-48(造成数据溢出)		

在这里插入图片描述

练习
在这里插入图片描述
答案:
1)可以 / 错误(int–>short)
2)可以 / 不可以(int–>byte) / 可以
3)可以 / 可以 / 可以
4)可以 / 可以 / 不可以(int–>short)

在这里插入图片描述

		//基本数据类型->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+" "+s2+" "+s3+" "+s4);
	
		//String->基本数据类型
		String s5="123";
		Double num1=Double.parseDouble(s5);
		Float num2=Float.parseFloat(s5);
		Long num3=Long.parseLong(s5);
		Byte num4=Byte.parseByte(s5);
		int num5=Integer.parseInt(s5);
		boolean b=Boolean.parseBoolean("true");
		short num6=Short.parseShort(s5);

		System.out.println("================");
		System.out.println(num1);//123.0
		System.out.println(num2);//123.0
		System.out.println(num3);//123
		System.out.println(num4);//123
		System.out.println(num5);//123
		System.out.println(num6);//123
		System.out.println(b);//true
		
		//怎么把字符串转成字符char ->含义是指把字符串的第一个字符得到
		System.out.println("================");

		System.out.println(s5.charAt(0));//1

在这里插入图片描述

6. 作业

在这里插入图片描述
答案:
30
8

在这里插入图片描述

	char c1='\n';
		char c2='\t';
		char c3='\r';
		char c4='\\';
		char c5='1';
		char c6='2';
		char c7='3';
		System.out.println(c1);
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);
		System.out.println(c5);
		System.out.println(c6);
		System.out.println(c7);
		String book1="天亮";
		String book2="江湖";
		System.out.println(book1+book2);

		char c1='男';
		char c2='女';
		System.out.println(c1+c2);

		double price1=123.56;
		double price2=100.11;
		System.out.println(price1+price2);

答案:
天亮江湖
52906
223.67000000000002

		String name="jack";
		int age=20;
		double score=90.8;
		char gender='男';
		String hobby="打篮球";
		System.out.println("姓名\t年龄\t成绩\t性别\t爱好\n"+name+'\t'+
		age+'\t'+score+'\t'+gender+'\t'+hobby);

输出:
在这里插入图片描述

7. 小结


http://www.kler.cn/a/386793.html

相关文章:

  • DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链
  • 深度学习中的感受野:从基础概念到多层次特征提取
  • 前端框架大比拼:React.js, Vue.js 及 Angular 的优势与适用场景探讨
  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • 机器学习基础02_特征工程
  • 在C++上实现反射用法
  • selenium大量并发连接驱动超时
  • sealos部署K8s,安装docker时master节点突然NotReady
  • # SpringCloud学习
  • 虚拟现实辅助工程技术如何加速汽车设计与制造
  • 接口类和抽象类在设计模式中的一些应用
  • 深度学习:bert模型
  • Nuxt.js 应用中的 prepare:types 事件钩子详解
  • MySQL 四类管理日志
  • 力扣(leetcode)每日一题 3255 长度为 K 的子数组的能量值 II|滑动窗口
  • 【系统架构设计师】2022年真题论文: 论软件维护方法及其应用(包括解题思路和素材)
  • 决策树(部分)
  • Ubuntu 22 安装 Apache Doris 3.0.3 笔记
  • (十五)JavaWeb后端开发——异常处理/AOP面向切面编程
  • 六、SpringMVC的视图
  • C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
  • React 入门课程 - 使用CDN编程React
  • LeetCode 234.回文链表
  • 高级java每日一道面试题-2024年10月29日-JVM篇-简述分代垃圾回收器是怎么工作的?
  • pytest简单使用
  • vue-svg-icon的安装和使用