1.1.2变量和数据类型

变量

变量的基本概念

声明变量的本质就是在内存中申请一个存储单元
存放数据内容大小不同,存储单元大小也不同,使用数据类型加以描述,为了下次访问墟制定名字,用于记录该变量对应的存储单元。

变量的声明方式

数据类型 变量名=初始值;
其中=初始值可以省略,但;不可以省略

/*
编程实现变量的声明和使用
*/
public class Vartest{
	
	public static void main(String [] args){
	
	//1、声明一个变量并初始化  数据类型  变量名=初始值;
	int age=18;
	//2、打印变量的数值   +字符串连接符  用于将两边的内容拼接/连接起来结果还是字符串
	System.out.println("年龄="+age);//age=18
	
	System.out.println("-------------------------------------");
	//3、使用变量的注意事项
	//3.1使用变量之前需要声明
    	//System.out.println("name="+name);//错误,找不到符号
		//3.2使用变量之前需要初始化
		//String name'
		//System.out.println("name="+name);//错误;可能尚未初始化变量name
		String name="帅比";
		System.out.println("name="+name);//name=陈雨
		//3.3变量不能重复声明
		//int age=17;//错误:已在方法main(String[])中定义/声明了变量
	}
}

`

标识符的命名法则(笔试)

有数字、字母、下划线以及$等组成,其中数字不能开头。
不能使用java中的关键字,所谓关键字就是java语言用于表示特殊含义的单词。
区分大小写,长度没有限制但不宜过长。
尽量做到见名知义,支持中文但不推荐使用。
标识符可以给类、变量、属性、方法、包 起名字。

变量输入输出的案例实现

案例题目

提示用户从键盘输入自己的姓名和年龄信息并打印出来。
第一步 应该先准备两个变量,一个记录姓名,一个记录年龄
第二步 提示用户从键盘输入姓名和年龄
第三步 将变量的数值打印出来

/*
编程实现变量的输入输出
*/

//导入java目录中util目录的Scanner类
import java.util.Scanner;
public class VarIOTest {
	
	public static void main(String[] args){
		
		//1.声明两个变量用于记录姓名和年龄信息
		String name;
		int age;
		//2.提示用户从键盘输入姓名和年龄信息并放到变量中
		System.out.println("请输入您的姓名和年龄信息:");
	    //创建一个扫描器来扫描键盘输入的内容  System.in 代表键盘输入
		Scanner sc=new Scanner(System.in);
		//通过扫描器读取一个字符串数据放入变量name中
		name=sc.next();
		//通过扫描器读取一个证书数据放入变量age中
		age=sc.nextInt();
		//3.打印变量的数值
		System.out.println("name="+name);
		System.out.println("age="+age);
	}
}

优化

/*
编程实现变量的输入输出
*/

//导入java目录中util目录的Scanner类
import java.util.Scanner;
public class VarIOTest {
	
	public static void main(String[] args){
		
		//1.声明两个变量用于记录姓名和年龄信息
		//String name;
		//int age;
		
		//2.提示用户从键盘输入姓名和年龄信息并放到变量中   变量随时用随时声明
		System.out.println("请输入您的姓名和年龄信息:");
	    //创建一个扫描器来扫描键盘输入的内容  System.in 代表键盘输入
		Scanner sc=new Scanner(System.in);
		//通过扫描器读取一个字符串数据放入变量name中
		String name=sc.next();
		//通过扫描器读取一个整数数据放入变量age中
		int age=sc.nextInt();
		//3.打印变量的数值
		//System.out.println("name="+name);
		//System.out.println("age="+age);
		System.out.println("name="+name+",age="+age);
	}
}	

数据类型

数据类型的分类

主要分为两大类
(1)基本数据类型
byte、short、int、long、float、double、boolean、char
(2)引用数据类型(了解)
数组、类、接口、枚举、标注

进制之间的转换

正十进制数转换二进制
a、除二取余法
b、拆分法
负十进制转换为二进制的方式
a、先将十进制的绝对值转换为二进制,然后进行按位取反再加1.
负数的需要补码:按位取反,再加1。
正负二进制数相加,高位溢出,丢弃。
负二进制转换为十进制的方式
a、先减1再按位取反,合并为十进制整数后再加上负号。

单个字节所能表示的整数范围(重中之重)
非负数所能表示的整数范围:0000 0000~0111 1111=>0127=>02……7-1
负数所能表示的整数范围:1000 0000~1111 1111=>-128-1=。-2^7-2^0
单个字节表示的范围是:-27~27-1,也就是-128~127.

整数类型

byte类型在内存空间中占1个字节,表示范围是:-27~27-1
short占2个字节,表示范围-215~215-1
int占4个字节,表示范围-231~231-1
long占8个字节,表示范围-263~263-1
在java中直接写出的整数数据叫做直接量/字面值/常量,默认为int类型。若希望表达更大的直接量,则在直接量的后面加上l或者L,推荐L。
整数类型的编程使用

/*
编程实现整数类型的使用
*/
public class IntTest1{
	public static void main(String[] args) {
		//1.声明一个byte类型的变量并初始化
		byte b1=25;
		//byte b1=250;   //错误:不兼容的类型:从int转换到byte可能会有损失   250这样直接写出的整数数据叫做直接量/常量/字面值  默认为int类型
		//2.打印变量的数值
		System.out.println("b1="+b1);//b1=25
		System.out.println("-----------------------------");
		//3.声明一个short类型的变量并初始化
		short s1=250;
		//short s1=250250;//错误:不兼容的类型:从int转换到short可能会有损失
		System.out.println("s1="+s1);//s1=250
		System.out.println("-----------------------------");
		//4.声明一个int类型的变量并初始化
		int i1=250250;
		//int i1=2502505006;//错误:整数太大  默认为int类型,这个数据自身已经出错
		//int i1=2502505006L;//错误:不兼容的类型:从long转换到int可能会有损失
		System.out.println("i1="+i1);//i1=250250
		System.out.println("-----------------------------");
		//5.声明一个long类型的变量并初始化,若描述比long类型还大的数据则使用java.math.BigInteger类型
		long g1=2502505006L;
		System.out.println("g1="+g1);//g1=250250500
  }
}

整数类型的笔试考点

根据上述代码的long类型可以明白我们为什么标识符不能用数字开头。

请问下面的代码是否有错误?若有请指出并说明原因
int i2=25;
byte b2=i2;
System.out.println(“b2=”+b2);

发生报错,直接量数据类型可以直接判断是否在范围里,而这段代码i2并不是一个直接量,而是一个变量,byte不能判断是否在范围内,只能报错。

浮点类型

java中用于描述小数的类型就是浮点类型,包括float、double,推荐使用double类型
其中float类型占4个字节,称为单精度浮点数,可以表示7位有效数字,范围 -3.403E38~3.403E38。
double占8个字节,双精度浮点数,可以表示15位有效数字,范围-1.798E308~1.798E308。
java中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,则需要在直接量的后面加上f或者F。

/*
编程实现浮点类型的使用
*/
public class DoubleTest{
	public static void main(String[] args){
		
		//1.声明一个float类型的变量并初始化
		//float f1=3.1415926;//错误:不兼容的类型: 从double转换到float可能会有损失  小数数据叫做直接量,默认为double类型
		float f1=3.1415926f;
		//2.打印变量的数值
		System.out.println("f1="+f1);//f1=3.1415925   默认是7位有效数字
		
		System.out.println("-----------------------------");
		//3.声明一个double类型的变量并初始化
		double d1=3.1415926;
		System.out.println("d1="+d1);//d1=3.1415926  一般是15位有效数字
		
		System.out.println("-----------------------------");
		//4.笔试考点
		System.out.println(0.1+0.2);//0.30000000000000004   运算时可能 会有误差,若希望实现精确运算则借助java.math.BigDecimal类型
	}
}

布尔类型

java中用于描述真假信息类型有:boolean,数值只有:true和false。
布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节。

/*
编程实现布尔类型的使用
*/
public class BoolTest{
	public static void main(String [] args){
		
		//1.声明一个boolean类型的变量并初始化
		boolean b1=true;
		//2.打印变量的数值
		System.out.println("b1="+b1);//b1=true
	
	    System.out.println("----------------------");
		//3.修改变量b1的值=赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量中原来的数值
		b1=false;
		System.out.println("b1="+b1);//b1=false
		System.out.println("----------------------");
		//b1=1;//错误:不兼容的类型:int无法转换为boolean
		
	}
}

字符类型

java 语言中用于描述单个字符的数据类型:char类型。如:‘a’、'中’等
占两个字节并且没有符号位,表示的范围是:0~65535,由于现实生活中很少有数据能够被单个字符描述,因此以后的开发中更多的使用由多个字符串起来组成的字符串,使用Steing类型加以描述,如:“hello”、“奇点”等。
计算机的底层只是别0和1组成的二进制序列,对于字符‘a’这样的团来说不满足改规则,因此改数据无法直接在计算机中存储,为了使得该数据能够存储起来就可以给该数据制定一个编号,然后将编号存储起来即可,该编号就叫做ASCII。
要求掌握的ASCII有:‘0’-48 ‘A’-65 ‘a’-97 空格-32 换行符-10
要求掌握的转义字符有:"-" ‘-’ \-\ \t-制表符 \n-换行符

Unicode字符集

java字符类型采用Unicode字符集编码。Unicode是世界通用的定长字符集,所有的字符都是16位。

/*
编程实现字符类型的使用
*/
public class CharTest{
	public static void main(String [] args){
		
		//1.声明一个char类型的变量并初始化
		char c1='a';
		//2.打印变量的数值
		System.out.println("c1="+c1);//c1=a
		System.out.println("对应的编号是:"+(int)c1);//表示将char强行转换为int类型并打印  97
	
	System.out.println("--------------------------");
	//2.声明一个char类型的变量并初始化
	char c2=98;
	System.out.println("c2="+c2);//c2=b
    System.out.println("对应的编号是:"+(int)c2);
	
	System.out.println("--------------------------");
	//3.使用Unicode字符集来表示一下我的名字   奇点   对应的编号是\u5947\u70b9
	char c3='\u5947';
	char c4='\u70b9';
	System.out.println("最终的结果是:"+c3+c4);//奇点
	
	System.out.println("--------------------------");
	//4.特殊字符的使用    双引号本身有两个含义:a.字符串的开头和结尾标志   b.双引号自身   \专一就是转换原有的含义
	System.out.println("我想过过\"过过过过的生活!");//  \"-"
	System.out.println("我想过过\'过过过过的生活!");//   \'-'
	System.out.println("我想过过\\过过过过的生活!");//   \\-\
	System.out.println("我想过过\t过过过过的生活!");//   \t-制表符
	System.out.println("我想过过\n过过过过的生活!");//   \n-换行符

	}
}

基本数据类型的转换

方式:自动类型转换和强制类型转换。
自动:从小类型到大类型之间的转换。

long到float是小到大,虽然long8个字节,float4个字节,但是float的范围比long要大得多

强制:从大到小 语法格式:目标类型 变量名=(目标类型)源类型变量名;
强转有风险,操作需谨慎

/*
编程实现基本数据之间转换的使用
*/
public class TransformTest{
	public static void main(String [] args){
	
	//1.声明两个变量并初始化
	byte b1=10;
	short s1=20;
	//2.打印变量的数值
	System.out.println("b1="+b1);//b1=10
	System.out.println("s1="+s1);//s=20
   
    System.out.println("--------------------------");
    //3.实现自动类型转换的使用
    //表示将变量b1的数值赋值给变量s1,并覆盖变量s1中原来的数值,相当于从byte类型到short类型的转换,小到大  自动转换
    s1=b1;
    System.out.println("b1="+b1);//b1=10
    System.out.println("s1="+s1);//s1=10

    System.out.println("--------------------------");
	//4.实现强制类型转换的使用
	//表示将变量s1的数值赋值给变量b1,并覆盖变量b1中雨来的数值,相当于从short类型到byte类型的转换,大到小  强制转换
    //b1=s1;  //错误: 不兼容的类型: 从short转换到byte可能会有损失
	s1=128;   //故意加上该行代码    128:0000 0000 1000 0000  =>1000 0000=>0111 1111=>1000 0000=>128=>-128
	b1=(byte)s1;
	System.out.println("b1="+b1);//b1=10
    System.out.println("s1="+s1);//s1=10

   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值