day02Java语言基础数量部分

今天学习了:
1. Java中数量相关的知识,包括,关键字,标识符,常量,变量等等相关知识,
2. 常量中主要学习了进制,以及有符号数表示
3.变量主要涉及变量定义以及,变量值的类型转换。

1.关键字

关键字 :被Java语言赋予特殊含义的单词

关键字的特点 :组成关键字的字母全部小写

关键字的注意事项 :高级的编辑器或者专门的开发工具中,关键字会有高亮效果

goto和const作为保留字存在,目前并不使用

 

 

2.标识符

标识符(我们自己起的一个名字)

就是给类,接口,方法,变量等起名字时使用的字符序列

组成规则:

英文大小写字母

数字字符

$和_

注意事项:

不能以数字开头

不能是Java中的关键字(保留字)

区分大小写  

常见命名规则:驼峰命名

包命名:就类似于在操作系统中,以文件夹的形式组织文件,在java语言中,以包来组织java中的类
关于包来说,为了防止类的命名冲突,一个包下不可以定义同名的类,但是不同包可以定义同名的类

如果,不同的coder,定义了相同的类名此时,只要保证同名的类在不同的包下就可以
也就是说,解决类的同名问题依靠的是包名的不同
为了保证包名的唯一,以域名(唯一的)反转的形式来命名包
baidu.com
com.cskaoyan.name
com.zs.name


单级     test 一个全部小写的单词
多级包   com.cskaoyan.name 以域名反转的方式来命名,单词全部小写,单词之间以.分隔

类和接口命名
单个: 首字母大写,其余字母全部小写 Student
多个单词: 每个单词首字母大写,其余字母全部小写 JavaBasic MaxAge

变量和方法的命名:
单个: 所有字母小写 value
多个单词:第一个单词首字母小写,从第二个单词开始,每个单词首字母大写 intValue

常量的命名:所有字母全部大写
单个: 单词的所有字母全部大写即可 MAX IP NONE
多个单词: 每个单词全部大写,单词之间以_来分隔: MAX_AGE MAX_VALUE IP_ADDRESS

在实际开发当中,命名要遵循的一个核心原则:见名知意

public class Demo2Identifier {

  public static void main(String[] args) {
    //标识符可以包含英文大小写字母,数字字符,$和_
    int intValue123$_;

    //注意事项
    //1.标识符不能以数字开头
    //int 1intValue;

    //2.不能是Java中的关键字(保留字)
    //int class;

    //3. java语言中严格区分大小写
    int Class;

  }
}

 

3.注释

注释:用于解释说明的文字


java注释的分类:
1. 单行注释 //
2. 多行注释 (不能嵌套使用)  /*注释内容*/
3. 文档注释(仅从注释的角度来说他们没有任何区别,但是文档注释有一个特殊的效果)   /**注释内容*/

千万不要忽视注释的作用!!
1.写代码
2.项目维护,阅读代码

//我通过class关键字定义了一个类,它的名字叫Demo1Note
public class Demo1Note {

  public static void main(String[] args) {

    //千万不要忽视注释的作用,尤其是对于初学者,最好先写注释,在写代码

    //第一
    //开始写代码


    //第二


    //第三

    //if( ) {
    //  //该分支对一个。。。情况
    //
    //} else if() {
    //  //该分支。。。。
    //
    //} else if() {
    //
    //}

  }

}

 

 

4.常量、进制、进制转化、有符号表示

常量:在运行过程中,其值不会发生改变的量

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

字面值常量:
字符串常量 :双引号引起来的内容 "Hello" 代表固定的字符序列 Hello
整形常量:所有整数 1 , 2
小数常量:所有小数 0.1 ,3.2
字符常量:用单引号引起来的内容 'a', '我'
布尔常量: 只有 true or false
空常量: null (面向对象)

/** Java语言中表示不同进制的语法
    二进制:由0,1组成,以0b开头,比如0b1100
    八进制:由0~7组成,以0开头, 比如014
    十进制:由0~9组成,默认10进制,比如12
    十六进制:由0~9,A~F(或a~f)表示0~15,以0x开头
 */
public class Demo2Int {

  public static void main(String[] args) {

    //12对应的2进制表示 以0b开头
    System.out.println(0b1100);

    //八进制的表示 以0开头
    System.out.println(011);

    //10进制的输出
    System.out.println(11);

    //16进制 以0x开头
    System.out.println(0x11);
    System.out.println(0x1f);
    System.out.println(0x1F);
    System.out.println(-12);
  }

}

  

10进制和2进制的相互转化:

 

 

 

  之前我们讨论了Java语言中不同进制的表示方法,其实,计算机中的数据也是这样来表示的。 那么,随之而来有一个问题,上面的进制表示,好像默认表示的是正整数,那负数在计算机中如何表示呢?

原码

  在进制表示法的基础上,在最高位增加一 位,表示正负

反码

  原码和反码的中间状态的数值编码表示

补码

  所有整数在计算机中其实都是以补码形式存在

5.变量

变量
在程序运行期间,其值可以改变的量,在某个范围内可以改变的量
理解(通过名字访问到)变量就是“一片”内存空间

变量定义的格式
数据类型 变量名 = 变量值

6.数据类型

  数据类型

  一种数据类型,其实表示的就是一个数据集和基于该数据集的一组合法操作

 

 

 

  整数默认:int 小数默认:double

 

 

对于boolean类型的变量

数据类型的转化(jvm默认类型转化规则):
1. boolean类型的值不能直接转化为其它数据类型的值
2. byte,short,char—>int—>long—>float—>double
3. byte,short,char相互之间不转换,他们参与运算首先转换为int类型

强制转化
目标类型 变量名=(目标类型)(被转换的数据)

 public class Demo1Variable {

  public static void main(String[] args) {
    //数据类型  变量名(标识符) =  常量值 1
    byte byteValue = 10;

    //改变变量的值
    //byteValue = 120;

    int intValue = 20;

    //定义一个boolean类型的变量
    boolean b = true; // false

    //合法的值的表示范围是 [-128 - 127]
    //byteValue = 200;

    // 不同类型变量之间的运算和赋值
    // 对于变量而言编译器,它不可能知道变量当前的值多少,禁止把大类型的值赋值给小类型
    //byteValue = intValue + byteValue;

    //这里有一个问题: 不同类型的变量之间可以做运算
    // 对于jvm来说,它要求参与运算的数量之间,他们必须是同一种类型
    //  比如说: int + byte,jvm首先会将byte变量读取出来,变成一个int类型的值,然后是两个int类型的值做运算
    intValue = intValue + byteValue;

    //类型之间默认的转化规则  小类型 -》大类型
    long l = 100000;
    l =  intValue + l;

    //练习
    l = byteValue + intValue + l;

    //
    int a = 10;
    byte bValue = 20;
    //假设你确定,a + bValue的值在byte类型的表示范围之内
    //强制类型转化   目标类型 变量名=(目标类型)(被转换的数据);
    byte c =(byte)(a + bValue);
    System.out.println(c);

    c = (byte) 129; //129int类型的整数值 ——> byte c
    // 129  补码  0,10000001
    // c           1,0000001 -> 1,1111110
    //                               + 1
    //                         1,1111111 原码表示 -> 十进制的值 64 + 32 + 16 + 8 + 4 + 2 + 1 -127
    System.out.println(c);

  }

}

public class Exercise {

  public static void main(String[] args) {
    //
    byte b1 = 1, b2 = 2, b;

    //byte,short,char相互之间不转换,他们参与运算首先转换为int类型
    //b = b1 + b2; //两个byte类型的值参与运算,他们都会首先被转化成int

    //这是因为,编译器简单的判断了一下,不会超出byte类型变量的表示范围
    b = 1 + 2;
    //b = 202 + 1;
  }

}

使用变量的注意事项:

作用域
变量有效的时间范围,这个范围通常用{}来界定

初始化值
变量在使用之前,由编译器强制必须赋初值
建议一行定义一个变量
从代码的可读性角度来考虑


public class Scope {

  public static void main(String[] args) {

    int i = 10;
    {
      //这个{}就代表了一个作用域

      System.out.println(i);
    }

    //在变量定义的作用域之外,就访问不到该变量了
    System.out.println(i);


    //对于变量而言,一定要先赋值,再使用。
    //默认0,只针对成员变量和数组中的值。局部变量没有默认初值,得自己赋初值。
    //初始化,就是给变量赋予初值
    int a;
    int b = 10, c, d = 10;

    a = 10;
    System.out.println(a);
  }

}

 

 

 

 

 

posted @ 2020-04-08 00:48  dust--  阅读(227)  评论(0编辑  收藏  举报