JAVA基础语法(一)----常量和变量、进制和进制的转换、Java数据类型概述

一、常量和变量
(一)常量

    1、常量概述:在程序运行过程中其值不发生改变的量。

    2、Java中的分类:字面值常量、自定义常量(后期补上)

字面值常量:

  (1)字符串常量:用双引号括起来的内容属于字符串常量。

      System.out.println("Hello World!!");

  (2)字符常量:用单引号括起来的单个字符

      System.out.println('A');

      System.out.println('我');

  (3)整数常量:所有整数

  (4)小数常量:所有小数

  (5)布尔常量:只有true、false

  (6)空常量:Null

(二)变量

  1 、变量概述:在程序运行过程中,在其作用域内可以发生改变的量。

   2、变量的定义格式

      数据类型  变量名=初始值;


进制和进制的转换      

  1、进制概述:就是进位制,是人们规定的一种进位方法。对于任何一种进制--X进制,就表示某一位置上的数计算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

  2、不同进制的表现形式

  * 二进制数据:由0、1组成, 以0b开始

  * 八进制数据:由0、1、2、...、7组成 ,以0开始

  * 十进制数据:由0、1、2、...、9组成,整数默认是十进制数

  * 十六进制数据:由0、1、2、...、9、A、B、...、F组成,以0x开始

  3、进制的转换

  * 任意进制到十进制之间的转换

    **每一组数据 =系数*基数^权



   * 十进制数据到任意进制之间的转换

     **除基取余,直到商为零,余数反转



 * 任意进制到任意进制之间的转换

   ** 一般以十进制作为桥梁,进行两次转换得到结果

   ** 也有一种快速转换法,即利用 8421BCD码完成转换,如下:


 


三、Java数据类型概述

    Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间,其分类如下:



      内存分配如下:



** 举例:

class  DataType{
	public static void main(String[] args) {
		//定义变量的语法: 数据类型  变量名=初始化值 如: int num=100;
		//Java中的数据类型:基本数据类型 和 引用数据类型
		//Java中的基本数据类型
		//1.整数型: byte  short int long
		byte b=1;
		short s=10;
		int num=100;
		//整数默认是int类型
		long num2=1000;//
		long num3=100L;//注意定义long类型时 数值最好加上L

		//byte bb=130;报错:超出了byte的范围

		//2.浮点型(小数型) float double
		//float 占四个字节
		//double 占8个字节
		//小数默认是double类型  整数默认是int类型
		float f=3.14f;//注意:定义float类型,数值后面注意要加上f
		double dd=3.14;
		//字符型 char 占两个字节
		char ch='A';
		char cc='我';
		//boolean 布尔型 占一个字节
		boolean flag=true;
		boolean flag2=false;
		//基本数据类型:整型 浮点型 字符型 布尔型



* 常见的数据类型定义及使用时的易错点
  
  

 ** 自动类型提升:byte、short、char在参与运算时,会自动提升为int类型的数据进行运算,如果在运算过程中遇到long、float、double类型的数据,会相应的提升为long、float、double类型数据。

例1

class TextDataType 
{
	public static void main(String[] args) 
	{
		byte a=1;
		byte b=2;
		byte c=a+b;
		System.out.println(c);
	}
}

 


解析:byte类型的数据a和b,在参与运算时会自动提升为int类型,计算结果为4个字节的数据,byte类型的c数据是不能装下该结果的。

改正:可以用强制类型转化操作,进行运算

      byte c=(byte)(a+b);

结果如下:


例2

class TextDataType 
{
	public static void main(String[] args) 
	{
		byte a=1;
		byte b=2;
		long num=2L;
		float f=1.1f;

		float c=a+b+num+f;
		System.out.println(c);

		double d=a+b+num+f;
		System.out.println(d);

	}
}


运行结果:


例3

class TextDataType 
{
	public static void main(String[] args) 
	{
		byte a=1;
		double b=1.1;
		long sum=a+b;
		System.out.println(sum);

	}
}


运行结果:


解析:虽然long类型数据和double类型数据都是8个字节的存储单元,但是小数在内存中的存储方式和整型数据是不同的,因此double类型的数据是不能存放在long类型的变量中。同样,如果必须存放为long类型数据,则可以用强制类型转化,不过会有精度损失。

 


** 常量优化机制

class TextDataType 
{
	public static void main(String[] args) 
	{
		byte sum;
		sum=3+4;
		System.out.println(sum);

	}
}

 

    在你看了上面的自动类型提升机制后,有可能会认为这段代码是错误的,我刚开始就是这样想的(ps://一般没有定义的整型常量在Java中会被默认为int类型数据,那么计算结果为int类型的数据当然不可能存放在byte类型的变量中),然而运行结果证明编译无误。这就是因为Java中的常量优化机制了。
   结果如下:













评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值