码迷,mamicode.com
首页 > 其他好文 > 详细

变量和数据类型

时间:2021-06-02 12:20:52      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:存在   浮点   描述   string   基本概念   方法   识别   程序   强制类型转换   

一、变量的基本概念

当需要在程序中记录单个数据内容时,则声明一个变量即可,而声明变量的本质就是在内存中申请一个存储单元,由于改存储单元中的数据内容可以改变,因此得名为“变量”。

1、变量的声明方式

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

    其中‘= 初始值’可以省略,但‘;’不能省略。

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

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

案例:

/*
	案例:提示用户键盘输入自己的姓名和年龄信息并打印出来。
*/

//导入java目录中util目录中的Scanner类
import java.util.Scanner;

public class OwnTest {
	
	public static void main (String [] args) {
		
		
		//1. 声明两个变量用于记录姓名和年龄
		//2. 提示用户从键盘输入姓名和年龄信息并放入到变量
		//3. 打印变量的数值
		
		//创建一个扫描器来扫描键盘输入的内容,System.in代表键盘输入
		Scanner sc = new Scanner(System.in);
		
		System.out.println("输入自己的姓名和年龄信息");
		
		//通过扫描器读取一个字符串数据放入变量name中
		String name = sc.next();
		//通过扫描器读取一个整数放入变量age中
        int age = sc.nextInt();
		
		//System.out.println("name = " + name);
        //System.out.println("age = " + age);
		//尽可能减少重复代码
		System.out.println("name = " + name + "," + "age = " + age);
	}
}

二、数据类型

Java语言中数据类型分为两大类:

  1. 基本数据类型:

    byte、short、int、long、float、double、boolean、char

    (占用字节)

  2. 引用数据类型

    数组、类、接口、枚举、标注

1、进制之间转换

  • 正十进制转换为二进制的方式:

    1. 除2取余,使用十进制整数不断地除以2取出余数,知道商为0时将余数逆序排序。

    2. 拆分发,将十进制整数拆分为若干二进制权重的和,有该权重下面写1,否则写0。

      45=> 32+8+4+1
      ....128   64   32   16    8    4    2    1
           0    0    1    0     1    1    0    1
      
  • 正二进制转换为十进制的方式

    加权法,使用二进制中的每个数字乘以当前位的权重再累加起来。

  • 负十进制转换为二进制的方式

    现将十进制的绝对值转换为二进制,然后按位取反再加1.

    负数的需要补码:按位取反,再加1。

  • 负二进制转换为十进制方式

    先减1再按位取反,合并为十进制整数后添加负号。

2、单个字节表示的整数范围

  • 计算机中单个字节表示八位二进制位,其中最高位(最左边)代表符号位,使用0表示非负数,1表示负数。
  • 非负数表示范围:0000 0000 ~ 0111 11111 => 0 ~ 127 => 0~2^7-1
  • 负数表示范围:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
  • 单个字节表示的整数范围:-2^7 ~ 2^7-1,也就是-128 ~127。

3、整数类型

  • Java语言中整数类型有:byte、short、int、long,推荐int类型

  • byte,占1个字节,表示范围:-2^7 ~ 2^7-1

  • short,占2个字节,表示范围:-2^15 ~ 2^15-1

  • int,占4个字节,表示范围:-2^31 ~ 2^31-1

  • long,占8个字节,表示范围:-2^63 ~ 2^63-1;long描述最大的整数,若描述比long类型还大的数据则使用java.math.BigInteger类型

  • 在Java程序中直接写出的整数类型叫做直接量/字面量/常量,默认为int类型。若希望表达更大的直接量,则在直接量的后面加上l或者L,推荐L。

            int i = 25;
    		byte b1 = (byte)i;
    		//byte b1 = i; 错误: 不兼容的类型: 从int转换到byte可能会有损失
    		System.out.println("b1 = " + b1);
    

4、浮点数类型

  • Java语言中描述小数的数据类型:float和double,推荐double类型

  • float,占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38 ~ 3.403E38.

  • double,占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围:-10798E308 ~ 1.798E308.

  • Java程序中直接写出的小数数据叫做直接量,默认为double类型。若用float类型的直接量,则需要在直接量后面加上f或F。

    浮点数直接运算存在误差,若希望实现精确运算则借助java.math.BigDecimal类型。

    System.out.println("sum =" + (0.1 + 0.2));
    // sum =0.30000000000000004 浮点数运算存在误差,若希望实现精确运算则需要借助java.math.BigDecimal类型
    

5、布尔类型

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

6、字符类型

  • Java语言中描述单个字符的数据类型:char类型,如‘a’、‘中’等

  • char,占2个字节且没有符号位,表示范围:0 ~ 65535。

  • 计算机底层只识别0和1的二进制序列,对‘a’这样的数据无法直接在计算机中存储。为了使得该数据能够存储起来就给该数据指定一个编号,然后将编号存储起来,该编号就叫做ASCII。

    /*
    	编程实现字符类型的使用
    */
    
    public class CharTest {
    	
    	public static void main(String [] args) {
    		
    		//声明一个char类型的变量并初始化
    		char c1 = ‘a‘;
    		//打印变量的数值
    		System.out.println("c1 = " + c1);
    		System.out.println("对应的编号是: " + (int)c1);//对应的编号是: 97,表示将char类型的c1强制转换为int类型并打印 97
    		System.out.println("---------------------------------");
    		//char类型可以直接初始化,赋值为编号。
    		char c2 = 98;
    		System.out.println("c2 = " + c2);
    		System.out.println("对应的编号是: " + (int)c2);
    	}
    }
    
  • 要求掌握的ASCII:‘0’-48,‘A’-65,‘a’-97,空格-32,换行符-10

  • Java字符类型采用Unicode字符集编码。Unicode是世界通用的定长字符集,所有的字符都是16位(2个字节)。

  • 要求掌握的转义字符:\ " - " ; \ ‘ - ‘ ; \ \ - \ ; \t - 制表符 ; \n - 换行符

//使用Unicode字符集来表示一下我的名字 \u0073\u006f\u006c\u0064\u0069\u0065\u0072(中文转换)
		char c3 = ‘\u0073‘;
		char c4 = ‘\u006f‘;
		char c5 = ‘\u006c‘;
		char c6 = ‘\u0064‘;
		char c7 = ‘\u0069‘;
		char c8 = ‘\u0065‘;
		char c9 = ‘\u0072‘;
//使用Unicode字符集来表示一下我的名字 soldier(ASCII转换)
		/*
		char c3 = ‘&#115‘;
		char c4 = ‘&#111‘;
		char c5 = ‘&#108‘;
		char c6 = ‘&#100‘;
		char c7 = ‘&#105‘;
		char c8 = ‘&#101‘;
		char c9 = ‘&#114‘;
		//以ASCII码进行转换报错
		*/
		System.out.println("我的名字:" + c3 + c4 + c5 + c6 + c7 + c8 + c9);//我的名字:soldier
		System.out.println("---------------------------------");
		//特殊字符的使用 双引号本身的2个含义:a.字符串的开头个结尾标记  b.双引号自身
		// \转义就是转换原有的含义
		System.out.println("我想过过\"过过过过的生活");// \" - "
		System.out.println("我想过过\‘过过过过的生活");// \‘ - ‘
		System.out.println("我想过过\\过过过过的生活");// \\ - 		System.out.println("我想过过\t过过过过的生活");// \t - 制表符
		System.out.println("我想过过\n过过过过的生活");// \n - 换行符

三、数据类型转换

基本数据类型之间的转换

  • 基本数据类型转换分为:自动类型转换盒强制类型转换

    自动类型转换:从小类型到大类型的转换

    byte=>short=>int=>long=>float=>double
           char=>int
    

    强制类型转换:从大类型转换到小类型之间的转换

    语法格式:变量名 = (目标类型)源类型变量名;

    强转有风险,操作需谨慎。

/*
	编程实现基本数据类型转换
*/

public class TransformTest {
	
	public static void main(String [] args) {
		//声明两个变量并初始化
		byte b1 = 10;
		short s1 = 20;
		//打印变量的数值
		System.out.println("b1 = " + b1);
		System.out.println("S1 = " + s1);
		System.out.println("-----------------");
		//自动转换后
		s1 = b1;
		System.out.println("S1 = " + s1);
		System.out.println("S1 = " + s1);
		System.out.println("-----------------");
		//强制类型转换后
		s1 = 200;
		b1 = (byte) s1;
		System.out.println("b1 = " + b1);//b1 = -56 200超出byte范围造成数据丢失
		System.out.println("S1 = " + s1);//S1 = 200
		System.out.println("-----------------");
		s1 = 30;
		b1 = (byte) s1;
		System.out.println("b1 = " + b1);//b1 = 30 30没有超出byte范围造成数据丢失
		System.out.println("S1 = " + s1);//S1 = 30
	}
}

变量和数据类型

标签:存在   浮点   描述   string   基本概念   方法   识别   程序   强制类型转换   

原文地址:https://www.cnblogs.com/china-soldier/p/14815458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!