Java基础笔记二:变量篇

  1. 一个程序就是一个世界。
  2. 变量是程序的基本组成单位。
  3. 变量有三个基本要素:类型,名称,值。

笔记来源:韩老师的Java教学视频
推荐给每一个人,老师讲解的十分完善。

一。变(变化)量(值)

  1. 相当于内存中一个数据存储空间的表示,通过变量名可以访问到变量(值)
  2. 基本步骤:
    • 声明:int a;
    • 赋值:a = 1;
    • 使用:println(a);
      一步完成:int a= 1;
  3. 注意事项:
    • 不同变量,类型不同,占用的空间大小不同
    • 变量必须先声明,后使用
    • 该区域的数据可以再同一类型范围内不断变化
    • 变量在同一个作用域内不能重名

二。+号使用:

  1. 当左右两边都是数值型时,则作加法运算
  2. 当左右两边有一方为字符串,则做拼接运算
  3. 运算顺序从左到右
  4. 例:println(“abc“ + 100 + 3)输出:abc1003

三。数据类型(背诵):

在这里插入图片描述

  1. String(字符串)是一个类,不属于基本数据类型
  2. 字节:一个字节是八个二进制位,最高位是符号位,剩下七位是数值位,所以八个二进制位最大是七个1,转化为十进制是127(补码)。
  3. 四个字节为三十二个二进制,因为二进制是由2的0次方开始的,所以是最高位为符号位舍去且包含负数,7+8+8+8一共[-(231)~231-1]个字节。
  4. 基本数据类型有固定的范围和字段长度,不会因为操作系统的改变而改变

四。数值型

(一)。整型

类型名称范围
byte字节-128~127
short短整型-(215)~215-1
int整型-(231)~231-1
long长整型-(263)~263-1
  1. Java的整数常量(具体值)默认为int型,声明long型常量须后加“l“或”L“
  2. long存储时后面不加L可以使用,Java底层会自动转化为int的范围,但是当long存储的值超出了2的31次方时也就超出int范围时,不加L会报错
  3. 把具体数值赋给byte时,先判断是否在byte范围内,否为int类型,会报错,
    例:
    byte b1 = 10; //正确
    byte b2 = 128; //错误
  4. 因为小数都是近似值,向下转型会产生丢失精度的问题,而整型常量是准确值,所以double不能赋予float,int可以赋予byte

(二)。浮点类型

类型名称范围
float单精度4字节
double双精度8字节
  1. 表示一个小数
  2. 浮点数 = 符号位 + 指数位 + 尾数位
  3. 尾数部分可能丢失,造成精度损失,double空间是8,float空间是4,因为小数都是近似值,不同进制的转换是自带乘除的,整数间的转换除到1就结束,必然能除尽,而小数多数情况下都是除不尽的,所以向下转型会产生丢失精度的问题
  4. 浮点型常量默认为double型,声明float型常量,须后加“f”或“F“。例:定义一个1.4,编译器读到1.4,但是不知道1.4后面还有几位,所以要加f来证明为float类型
  5. 表现形式:
    • 十进制数形式:5.12、5.2f、.512(0可以省略,必须有小数点)
    • 科学计数法形式:5.12e2、5.12e-2
  6. 当我们对运算结果为小数的数进行相等判断时,可能会得到不一致的结果,要小心
    代码理解:
	public static void main(String[] args){
		double num1 = 2.7;
		double num2 = 8.1 / 3;
		System.out.println(num1);//结果为2.7
		System.out.println(num2);//常理来讲:结果为2.7
		//比较两个值是否相等
		if(num1 == num2) {
			System.out.println("相等");//不显示,因为num2是接近2.7的一个小数
		}
		//正确写法:应该以两个数的差值的绝对值,在某个精度范围内判断
		if(Math.abs(num1 - num2) < 0.00001) {
			System.out.println("相等");//两个数差值非常小,达到规定精度,显示相等
		}
	}

(三)。字符类型

  1. 可以表示单个字符,字符类型为char,多个字符用String表示
  2. 字符常量是用单引号(’ ')括起来的单个字符,例:char c1 = ‘a’
  3. Java允许使用转义字符,例:char c2 = ‘\n’
  4. char的本质是整数,赋予中文字符时,输出整数
  5. 可以给char赋一个整数,输出时,会按照对应的Unicode码对应的字符
  6. Char类型是可以运算的,相当于一个整数,都有对应的Unicode码值。但整数超过范围会报错
  7. 代码理解:
	public static void main(String[] args){
		char c1 = 'a';
		char c2 = 97;
		char c3 = 'a' + 2;
		System.out.println(c1);//结果为a
		System.out.println(c2);//结果为a
		System.out.println(int(c2));//强制转换为整型,结果为97
		System.out.println(c3);//结果为c
	} 
  1. 本质:字符型存储到计算机中,需要将字符对应的码值(整数)找出来,比如’a’
    • 存储:‘a’ == > 码值(97) ==> 二进制(0110 0001) ==> 存储
    • 读取:二进制(0110 0001) ==> 97 ==> ‘a’ ==> 显示
  2. 字符和码值的对应关系是通过字符编码表决定的
    • ASCII码:
      一个字节表示,但只使用了128个字符,美国
    • Unicode:
      固定大小的编码,字母和汉字都是占用两个字节,浪费空间。兼容ASCII码表
    • utf-8:
      大小可变的编码,字母使用一个字节,汉字使用三个字节。
      是互联网使用最广的一种Unicode的实现方式(改进),可以使用1-6个字节表示一个符号,根据不同的符号变化字节长度
    • gbk:
      可以表示汉字,字母使用一个字节,汉字使用两个字节
    • gb2312:
      可以表示汉字,范围小于gbk
    • big5码:
      繁体中文,台湾,香港

(四)。布尔类型

  1. 数据只允许取值false和true,无null
  2. 适于逻辑运算,一般用于程序流程控制,例:if条件控制语句,for循环控制语句
  3. Java内不可以用0或非0的整数替代false和true

五。基本数据类型转换

(一)。自动类型转换

  1. 当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型
  2. 数据类型按精度(容量)大小排序为:
    在这里插入图片描述
    例:int num = ‘a’//结果为97
  3. 使用和细节
    1. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
      多种类型的数据混合运算时,系统首先将所有数据转换成容量大的数据类型,再进行计算
      例:
      int n1 = 10;
      float f1 = n1 + 1.1; //错误,1.1是double类型,计算结果也为double,会造成精度损失
      float f1 = n1 + 1.1F; //正确
    2. 编译器规定:(byte,short)和char之间不会相互转换
    3. 编译器规定:byte,short,char三者可以相互计算且只要参与运算,计算时首先转换为int类型
      例:
      byte b1 = 1;
      byte b2 = 2;
      short s1 = 1;
      short s2 = b1 + s1;//错误,结果为int
      byte = b1 + b2;//错误,结果为int
    4. boolean类型不参与转换

(二)。强制类型转换

  1. 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但有可能造成精度降低或溢出,要小心使用
	public static void main(String[] args){
		int n1 = (int)1.9;
		System.out.println(n1);//结果为1,造成精度损失
		int n2 = 2000;
		byte b1 = (byte)n2;
		System.out.println(b1);//结果为-48,造成精度溢出
	}
  n2内的2000是以二进制的方式存储的,int有4个字节,砍掉3个变成byte,前面三个字节的数据就没了
  1. 细节说明
    1. 当进行数据大 ==> 小的类型转换时,就需要用到强制类型转换
    2. 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
      例:
      int x = (int)10 * 3.5 + 6 * 1.5;
      //错误,int只会强制转换是10,之后再进行数值运算,因为有小数,结果为double
      int x = (int)(10 * 3.5 + 6 * 1.5);
      //正确,会先进行括号内运算,再进行转换
    3. byte,short,char类型在进行运算时,当作int处理

(三)。基本数据类型和String类型的转换

  1. 基本类型转String类型
    语法:基本类型的值 + “” 即可
    例:
    int n1 = 1000;
    String s1 = n1 + “”;
  2. String类型转基本数据类型
    1. 语法:通过基本类型的包装类调用parseXX方法即可
      例:
	public static void main(String[] args){
		int n1 = Integer.parseInt("123");
		double d1 = Double.parseDouble("123a");
		boolean b1 = Boolean.parseBoolean("123a");
		System.out.println(n1);//结果为123
		System.out.println(d1);//异常
		//与整型进行转换时,字符串中的字符必须是指定参数的十进制数字,否之,编译成功,运行时会抛出异常,程序终止
		System.out.println(b1);//结果为false,除非字符串为true,否则都显示false
	}```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值