02 常量 变量

常量

常量的概述和使用

常量——在程序的执行过程中其值不发生改变的量。

  • Java中常量的分类
    (1):字面值常量
    (2):自定义常量(面向对象部分讲解)

  • 字面值常量的分类
    (1): 字符串常量 用双引号括起来的内容 “HelloWorld” ,“Hello”
    (2): 整数常量 所有整数 12,23
    (3): 小数常量 所有小数 12.34,56.78
    (4): 字符常量 用单引号括起来的内容 ‘a’,‘A’,‘0’ (注意事项:单引号中只能是单个字母,单个数字,单个符号)
    (5): 布尔常量 较为特有,只有true和false
    (6): 空常量 null(数组部分讲解)

  • Java针对整数常量提供了4种表现形式(例;输出不同进制表现10的数据)
    二进制:由0,1组成 以0b开头 (0b10)
    八进制:由0,1,…7组成 以0b开头 (010)
    十进制:由0,1,…9组成 整数默认是十进制的 (10)
    十六进制:由0,1,…9,a,b,c,d,e,f(大小写均可) 以0x开头 (0x10)

 //JDK1.7之后,通过前缀区分不同进制的数据
		System.out.println(0b100);//二进制 以0b开头
		System.out.println(0100);//八进制 以0b开头
		System.out.println(100);//十进制 整数默认是十进制的
		System.out.println(0x100);//十六进制 以0x开头
  • 任意进制到十进制的转换——位权展开法
    在这里插入图片描述
  • 十进制到任意进制的转换——除基取余 直到商为0 余数反转 ;十进制到X进制这个基就是X
    在这里插入图片描述
  • 快速的进制转换法
    在这里插入图片描述

有符号数据表示法

(理解计算机底层如何做运算——所有数据的运算都是采用补码进行的)
有符号数据表示法的几种方式:

  • 原码
    就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
  • 反码
    正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
  • 补码
    正数的补码与其原码相同;负数的补码是在其反码的末位加1。
    在这里插入图片描述

变量

变量的概述

  • 变量——在程序执行的过程中,在某个范围内其值可以发生改变的量(例如:苹果的价钱)
    变量其实是内存中的一小块区域

  • 变量——用来不断的存放同一类型的常量,并可以重复使用
    变量定义格式——数据类型 变量名 = 变量值

  • 数据类型——变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间。
    java给我们提供了不同的数据类型,针对不同的数据类型,在内存中分配了不同大小的内存空间。

  • Java中数据类型的分类
    (1): 基本数据类型
    (2): 引用数据类型(后面讲解): 数组 , 类 , 接口

  • 基本数据类

   (1): 数值型
            整数型			  字节数			    范围
				  byte 		 1(8bit)       	-128  ~  127
				  short		 2(16bit)	   	-2^15 ~  2^15 - 1
				  int		 4(32bit)      	-2^31 ~  2^31 - 1
				  long		 8(64bit)      	-2^63 ~  2^63 - 1
			浮点数
				  float      4(32bit)      -3.403*10^38  ~ 3.403*10^38
				  double     8(64bit)	  -1.798*10^308 ~ 1.798*10^308				  
	(2): 字符型   char       2(16bit)	   0 ~ 2^16 - 1 = 65535	
	(3): 布尔型   boolean    1

整数默认是int类型的 , 浮点数默认是 double类型的
long(值后加后缀L:long num2=1000L)
float(值后加后缀F:float f=3.14F)
char(值用单引号引起来 只能是一个字符:char ch=‘A’)
boolean(boolean flag=true;boolean flag2=false)

//定义不同类型的变量并且输出
		//定义变量的格式:数据类型 变量名=值
		//变量名的命名规范:通用规范 变量名一般小写 多个单词 首字母小写 name  username  userName
		byte a=1;
		     a=20;  //重新给变量赋值
		byte c=127;
		int num=10000;
		long num2=1000L;//定义long类型的变量的时候,注意值得后面加上一个后缀L 表示这是一个long类型值
		float f=3.14F;//定义float类型时,值得后面加上后缀F 表示这是一个float类型得值,不加语法报错
		double d=3.14; 
		char ch='A'; //char 类型得值,要用单引号 引起来,只能是一个字符
		boolean flag=true;
		boolean flag2=false;
		//通过变量名,输出该变量得值
		System.out.println(a);
		System.out.println(c);
		System.out.println(s);
		System.out.println(num);
		System.out.println(num2);
		System.out.println(f);
		System.out.println(d);
		System.out.println(ch);
		System.out.println(flag);
		System.out.println(flag2);
  • 使用变量的注意事项
    a:作用域问题
    变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。
    相同的作用域中不能定义两个同名变量。
    b:初始化值问题
    没有初始化值不能直接使用
    c:在一行上建议只定义一个变量
    可以定义多个,但是不建议

  • Java语言中的字符char可以存储一个中文汉字:Java语言采用的是Unicode编码。
    Unicode编码中的每个字符占用两个字节。所以,Java中的字符可以存储一个中文汉字。

//定义变量得一些注意事项  //作用域:域,范围  一对{} 所括起来得这对范围,我们称之为作用域
		//1.在同一个作用域 里面不能定义两个同名变量
		int a=100;
		    a=200;  //重新赋值
		//2.变量必须赋值才能使用
		int b;
			b=10;
		//3.在一行上建议只定义一个变量
		int e;
		int f;
		e=20;
		f=20;
		byte by=1; 
		byte by2=2;
		
		//Unicode码——国际标准 汉字编码方式都遵守这个国际标准
		//char类型两个字节; GBK编码一个汉字占两个字节; UTF-8编码一个汉字占三个字节  
		char ch='你'; //GBK 
		byte a=1;
		char ch='a';
		int r=a+ch;//r为98 //ASCII码表中  'a'对应97  1+97为98 
		//ASCII 值   'a' 97   'b' 98    'A' 65    '0'  48    '1' 49

数据类型转换之隐式转换

在运算中自动转换数据类型
(1): boolean类型不能转换为其他的数据类型
(2): byte,short,char —int— long—float—double
只有byte、short、char数据类型进行运算时,数据类型将自动转化为int类型。
若还有long、float、double类型存在时,将以byte,short,char—int—long—float—double顺序进行转换。
(3): byte,short,char之间不转换,他们参与运算首先转换为int类型

//整数默认是int类型 小数默认是 double类型
		float f=3.14F;
		double dd=3.14;
		long num=1L;
		
		/*
		类型的自动提升:byte short char 在参与运算时,会自动提升为int 类型 
		如果还有 long float double 类型参与运算 则会相应的提升为 long float double  
		布尔类型不参与数学运算 
		byte short char 他们之间不转换
		*/
		byte b=3;
		byte a=3;
		int r=a+b; //byte r=a+b 变为int r=a+b//byte short char 在参与运算时 自动提升为int 类型
		byte c=20;
		long num=1L;
		float f=1.1F;
		double ss=c+num+f;//有 long float double 类型参与运算 相应的提升为 long float double

数据类型转换之强制转换

格式:目标数据类型 变量名=(目标数据类型)(被转换的数据);
尽量不要使用强制类型转化,因为可能存在损失精度的问题。

        byte a=3;
		byte b=127;
		//int r=a+b;
		//强制类型转换,把结果强制转换成某种类型,但是可能会有精度损失,因为会丢弃掉多余字节 
		short r=(short)(a+b);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值