lesson02_变量和数据类型

一、变量
  1.标识符
  在编写Java程序的过程中,需要我们自己命名的东西,这些东西就是标识符。
标识符的组成
    1).0到9数字
    2).26个英文大小写字母
    3).特殊符号:下划线(_)、美元符号($)、人民币符号(¥)
  定义合法的标识符
    1).数字不能作为开头
    2).严格区分大小写
    3).不可以使用关键字
    4).定义时,尽量达到见名知其意
  2.关键字
    关键字是被Java语言赋予特殊含义,具有专门用途的单词,可以这样理解,就如同我们注册商标是,关键字已经被人注册过了,不能再继续使用。
    关键字官方网站:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
    Java中所有关键字都是小写
  Java中共有50个关键字以及3个(true、false、null)不属于关键字的标识符
  3.Java中的命名规则

  针对Java当中的不同内容,在标识符的基础上,为这些内容命名还要符合以下规定,但是这些规定是不受语法约束的

    1).包名:所有字母都小写,当有多个单词连接时,使用“.”连接,例如:aaa.bbb.ccc

    2).类名/接口名:所有单词首字母大写,例如AaaBbbCcc(满足驼峰命名规则,这种称之为大驼峰)

    3).变量名/方法名:第一单词首字母小写,其他单词首字母大写,例如aaaBbbCcc(满足驼峰命名规则,这种称之为小驼峰)

    4).常量名:所有字母都大写,有多个单词组成时,使用_连接,例如AAA_BBB_CCC

    5).所有的命名在同一个作用范围内不能重名

  4.常量

  常量,是指在程序运行过程中值不会发生变化的标识符

  定义常量的语法:

    final 数据类型 常量名称=值;或者

    final 数据类型 常量名称;

    常量名称=值

  需要注意的是,常量的值只能赋一次值.。

  常量分类

    1).整数常量--所有整数

    2).小数常量--所有的小数

    3).布尔型常量--较为特殊,只有两个值true、false

    4).字符常量--将一个数字字母或者符号用单引号( ' ' )标识

    5).字符串常量--将一个或者多个字符用双引号(“ ”)标识

    6).null常量--只有一个数组就是null

  5.变量

  变量,顾名思义,就是在程序运行过程中值会发生变化的标识符,它相当于有名字的容器,这个容器用于装载不同类型的数据。它的作用是用来记录数值的变化,然后展示给用户。

    1).声明变量

      声明变量也叫定义变量,声明变量是为了使用最简洁的代码实现功能
      声明变量的格式

      第一种:先声明后赋值

      格式:数据类型 变量名;

      变量名=值;

      第二种:声明赋值同步进行

      格式:数据类型 变量名=值;

      变量的声明实质是是开辟一块新的内存,而赋值就是对这块新开辟的内存分配空间大小

      例如,声明一个整型变量a,它首先是开辟一块名字为a的空间,当为a赋值时候,例如a=12;则是为这块为a的内存分配大小为12的空间

    2).变量的作用域

    变量只有在它的作用域内才可以被使用,当超出这个作用范围,如果还需要使用这个变量就必须重新声明。
二、数据类型

  Java语言是一门强类型语言,对于每一种数据都定义了明确的具体数据类型,根据内存存储位置的不同,分为两种数据类型即基本数据类型和引用数据类型
  1.基本数据类型

    在Java中基本数据类型共有8种,在基本数据类型中又可以分为三大类:数值型、字符型、布尔型

    1).数值型

      (1).整数类型--存储整数:字节类型(byte)、短整型(short)、整型(int)、长整型(long)

      

      (2).浮点类型--存储小数:float(单精度浮点型)、double(双精度浮点型)

      

    在数值型中需要注意的几个地方

      (1).整数类型默认的是int类型,定义长整型时,当赋的值超出int的取值范围,必须在数值后面加上L或者l,如果没有超出,则可加可不加

      (2).浮点类型默认的是double类型,在定义单精度浮点数时,必须在数值后面加F或者f

      (3).可以为一个浮点数赋值一个整数的值

    2).字符类型

      (1).字符类型用于存储单一字符,使用char表示

      (2).每个chai类型的字符变量占2个字节

      (3).在赋值时一定要用英文半角的单引号(‘’)括起来,例如‘a’

      (4).可以赋值为一个0到65535之间的整数,计算机会根据ASCII表转换为对应的字符,例如97对应的字符是‘a’

      

      (5).一些特殊的字符

        --\r:表示回车

        --\n:表示换行

        --\t:表示制表符

        --\b:表示退格

    3).布尔类型

      布尔类型变量用来存储布尔(真假)值,在Java中用boolean表示,该类型的变量只有两个值,即true和false。其只占用一个字节。

    4).各数据类型的详解

    

  2.数值类型的转换

    在Java编程中,常常涉及到数据类型的转换,目前主要讲基本数据类型中数值类型转换,包括自动类型(隐式)转换,另一种是强制类型(显式)转换。

    在前面讲数据类型的时候,我们提到了各数据类型的取值范围从小到大依次:

    (byte、short、byte)-->int-->long-->float-->double

    在基本数据类型中,boolean类型占一个字节,由于其本身所代表的特殊含义,它不与其他类型进行转换

    1).自动类型转换

    从取值范围小向取值范围大转换,这种转换方式叫做自动类型转换,也叫隐式转换,它不需要做任何的说明。

    例如:byte b=14;int a=b;运行不会报错

    注意:

      (1).byte类型可以自动转换为short,int,long,float,double,但是不能直接转换为char,这是因为byte的取值范围是(-128,127),char的取值范围是[0,65535],这两个范围比较大小无法作比较。

      (2).short类型可以自动转换为int,long,float,double,但是不能直接转换为char。

    2).强制类型转换

    从取值范围较大想取值范围较小的转换,这种转换方式叫做强制类型转换,也叫显式转换,转换过程中需要做说明

    例如:int a=13;byte b=a;如果是这样会报错,需要修改为byte b=(byte)a;在a前面说明转换后的数据类型是byte

    注意:在byte或short与char作转换时,都需要做强制声明

    即:short s=12;char c=(char)s;byte b=11;char x=(char)b;

    char c=97;short s=(short)c;char cc=96;byte b=(byte)cc;

    3).表达式类型自动提升

    表达式提升是指由变量和运算符组成的一个算式,变量在进行运算时,会发生自动类型转换,自动提升到它默认的类型

    例如:byte b1=3;byte b2=4;byte b3=b1+b2;运行时会报错,这是因为在这里byte b3=b1+b2在运算时会自动把b1+b2的结果转换为int类型,会变成有int类型转换为byte类型,是属于强制类型转换

    因此修改为byte b3=(byte)b1+b2;

  3.引用数据类型的简单介绍

    引用数据类型主要包括类、接口、数组,这里主要讲String这个类简单的声明和使用

    String是声明字符串的数据类型,它是引用数据类型,当在声明时,与基本数据类型一致,在赋值是需要使用“”把值括起来,或者直接赋值为null

    其他数据类型可以转换我字符串,转换的方式:直接在其他数据类型后面加上“”;

    例如:int a=11;String s=a+“”;它会把int类型a转换为String类型
三、进制数之间的转换
  1.十进制数与二进制数之间的转换

    1).十进制转二进制

    将这个十进制数一直除以2得到余数,直到商为0时,将所得到的余数倒序从左往右排列

    

    将十进制数6转换为二进制数为110

      原码: ·就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。  

      反码:正数的反码与其原码相同;负数的反码是对其原码除符号位外逐位取反。

      补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 ·计算机的所有数据运算是通过补码来实现的。

    2).二进制转十进制

    将这个二进制数上的数从右往左乘以2的次方(从0次方开始)

    

    将二进制数0110 0100转换成十进制数得到的结果为100

  2.十进制数与八进制数之间的转换

    1).十进制转八进制

    与十进制转二进制一样,就是将十进制数一直除以8取余数,直到商为0时,将余数倒序从左往右排列,得到转换结果

     

    2).八进制转十进制

    与二进制转十进制一样,就是将八进制数上的每一位,从有往左乘以8的次方(次方从0开始)

    例如:将八进制数0226转换成十进制数

    ==>6*8^0+2*8^1+2*8^2=6+16+128=150
  3.其他进制数之间的转换

    1).十六进制与十进制之间的转换--与二进制与十进制之间的转换一样

    2).二进制与八进制之间的转换

      --1.二进制转八进制:首先将二进制数从右往左每三个看做一个整体(取三合一),不足三个的在前添0;其次是对每三个一组的整体转换成十进制数;将每一组所得到的结果合在一起就是二进制转成八进制的结果

      例如:将二进制数10010110转成八进制数

      首先:取三合一:   10   010   110  ;不足三个的左边添0   -->  010   010  110

      其次:对每三个一组转成十进制数:第一组结果是1*2^1=2;第二组结果是:1*2^1=2;第三组结果是:1*2^1+1*2^2=2+4=6

      因此这个二进制转成八进制的结果为226。为了与十进制数区分,在左边添0,结果为0226。

      验证一下:

      从前面知道,八进制数0226转成十进制数结果为150,我们看一下这个二进制数转换成十进制数的结果:1*2^1+1*2^2+1*2^4+1*2^7=2+4+16+128=150。结果也是150

      --2.八进制转二进制:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

      例如:将八进制数0226转换成二进制数

      首先:对八进制数上的每一个数字看做是十进制数,将其转换成二进制数,二进制数不足三个在左边添0,

       

        因此最后的结果:10010110(最左边的0可以省略的)

        更多进制数之间的转换,请参考:https://jingyan.baidu.com/article/495ba84109665338b30ede98.html

四、键盘输入Scanner

  在进行Java编程时,经常会遇到需要键盘输入,这个时候就需要用到Scanner。

  Scanner是专门用于键盘输入的,是已经别人已经写好了,我们直接使用它就可以。我们在使用的时候,总结起来四步:

  第一步:导包,导包的目的是为了告诉程序,需要使用到Scanner这个键盘输入工具类,在代码首行输入:import java.util.Scanner;或者import java.util.*;前者表示导入java.util包中的Scanner这个类,后者表示导入这个包中的所有类

  第二步:声明Scanner类型的变量(学习完面向对象之后这里其实是创建对象),即:Scanner Scanner的变量名=new Scanner(System.in);这里的Scanner变量名是任意命名的,只要 满足Java命名规则

  第三步:提示输入:System.out.println(”请输入“);

  第四步:声明变量接收输入的内容。这里需要注意的是,目前我们为已经学习了8种基本数据类型,外加一种引用数据类型,而且每一种数据类型接收的方式都不一样

    1.当接收的内容为byte类型时:首先声明一个byte类型的变量,然后把键盘输入的内容赋值给到这个变量

      即:byte 变量名=Scanner变量名.nextByte();

    2.当接收的内容为short类型时。首先声明一个short类型的变量,然后把键盘输入的内容赋值给到这个变量

      即:short 变量名=Scanner变量名.nextShort();

    3.int、long、float、double、boolean一样的原理,只是在接收的时候,使用Scanner变量名.nextXX时,这里的XX是指接收数据类型的名字,首字母大写即可

    4.当接收的内容为String时,同样声明一个String类型的变量接收,然后把键盘输入的内容赋值给这个变量

      即:String 变量名=Scanner变量名.next();

    5.当接收的内容是char时,首先也是声明一个char类型的变量,然后吧键盘输入的内容赋值给这个变量

      在此之前我们先来观察字符串与字符之间的关系,可以这样理解,字符串是由字符组成,字符串可以一个一个的分割成字符,例如字符串”abcd“,它是由‘a’、‘b’、‘c’、‘d’四个字符组成,在这个字符串abcd中,a是第一个字符,下标为0,b是第二个字符,下标为1......

      因此,在接收char类型时,是接收键盘输入的字符串,然后取的是输入字符串的第一个字符,因此它对应的下标应该是0。

      即:char 变量名=Scanner变量名.next().charAt(0);

转载于:https://www.cnblogs.com/zhaozhouIndex/p/11350797.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值