Java初始入门(二)

关键字

  • 关键字定义

    Java语言赋予特定含义的单词。

  • 关键字特点

    组成关键字的字母全部小写。

    注意main虽然经常用,但不是关键字

标识符

  • 标识符是什么?

    用来标识某个实体的一个符号,给类,接口,方法,变量等起名字时使用的字符序列。

  • 组成规则

    由英文大小写字母、数字字符、$和_组成。

  • 注意事项

    标识符不能以数字开头,不能是Java中的关键字,区分大小写。

  • 标识符命名规则

    标识符的命名主要分为以下几种:

    1. 包:其实就是文件夹,用于把相同的类名进行区分。包名全部小写
    2. 类或接口
      一个单词:首字母大写; 如:class Student{}
      多个单词:每个单词的首字母大写;如:class StudentName{}
    3. 方法或变量
      一个单词:单词的首字母小写;如:main
      多个单词:从第二个单词开始,首字母大写;如:myName
    4. 常量
      一个单词:全部大写;如:PI
      多个单词:每个单词都大写,中间用_隔开;如:STUDENT_AGE

    注意,不同人提出的命名规则不一样,只要遵循一种常用的即可。

注释

  • 单行注释,格式为://注释文字

  • 多行注释,格式为: /* 注释文字 */

  • 文档注释,格式为:/** 注释文字 */

数据中进制

  • 不同进制的数据组成

    • 二进制

      由0,1组成。以0b开头

    • 八进制

      由0,1,…7组成。以0开头

    • 十进制

      由0,1,…9组成。整数默认是十进制的

    • 十六进制

      由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头

  • 进制转换

     关于进制转换,将以以下四幅图去展示,四幅图是我看传播智客上视频得到的资料,如下所示:

    这里写图片描述

    下面图片给出的是二进制到十进制、八进制和十六进制的转换:

    这里写图片描述

    下面给出任意进制到十进制的转换:

    这里写图片描述

    下面给出的是十进制到任意进制的转换:

    这里写图片描述

原码、反码、补码

  • 原码

    最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

  • 反码

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

  • 补码

    正数的补码与其原码相同;负数的补码是在其反码的末位加1。

  • 原码、补码及反码的相互转化

    这里写图片描述

    计算机中所有数据的运算都是采用补码进行

Java中数据类型

 Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,具体类型及所占内存空间大小如下表所示:

编号数据类型占用空间表示范围
1整数类型(byte)1字节-128~127
2整数类型(short)2字节 215 ~ 2151
3整数类型(int)4字节 231 ~ 2311
4整数类型(long)8字节 263 ~ 2631
5浮点类型(float)4字节-3.403E38~3.403E38
6浮点类型(double)8字节-1.798E308~1.798E308
7字符型(char)2字节0~65535
8布尔型(boolean)1字节true或false
9类(class)
10接口(interface)
11数组([])

注意事项

  • 上表中1~8是基本数据类型,9~10是引用数据类型。整数默认为:int,小数默认为:double
  • boolean类型数据只允许取值 true 或 false,不可以0或非0的整数替代true和false
  • 声明long型常量必须后加‘ l ’或‘ L ’
  • Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F

数据类型转换

  • 默认转换

    不同数据类型之间的默认转换如下所示:
     byte,short,char相互之间不转换,他们参与运算首先转换为int类型;
     byte,short,char—int—long—float—double

    看下例:

     class DataType {
    public static void main(String[] args) {
        //两个int类型做加法
        int x = 3;
        int y = 4;
        int z = x + y;
        System.out.println(z);   //输出结果为7

        //定义一个byte类型,一个int类型,做加法
        byte a = 3;
        int b = 4;
        int c = a + b; 
    //因为int类型大于byte类型,因此a首先转换为int型,再进行加法,最后赋给c
        System.out.println(c);


        //byte c =  a + b; 错误,a + b后的类型为int型,可能造成精度损失
        System.out.println(c);
    }
}
  • 强制转换
    格式为:目标类型 变量名=(目标类型)(被转换的数据);

    一个例子:

    class DataTypeDemo4 {
    public static void main(String[] args) {
        byte a = 3;
        int b = 4;
        //上一个例子会造成编译错误,因为精度损失。byte c = 7; 
        byte c = (byte) (a + b);//用强制类型转换改进
        System.out.println(c);
    }
}

典型题目

题目1:

byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么?

答案1:

class DataTypeDemo6 {
    public static void main(String[] args) {
        byte b1 = 3,b2 = 4,b;
        //b = b1 + b2; 错误,变量相加,会首先看类型问题,
        //最终把结果赋值的也会考虑类型问题,byte型会默认转换为int型。
        b = 3 + 4; //常量,先把结果计算出来,
                   //然后看是否在byte的范围内,如果在就不报错。
    }
}

题目2:

byte b = 130;有没有问题? 如果想让赋值正确,可以怎么做?结果是多少?

答案2:

class DataTypeDemo7 {
    public static void main(String[] args) {
        //因为byte的范围是:-128到127。
        //而130不在此范围内,所以报错。
        //byte b = 130; 

        //我们可以使用强制类型转换
        byte b = (byte) 130;

        //结果是多少呢?
        System.out.println(b);
    }
}

结果的分析过程:
 由前面可知,计算机中数据的运算都是补码进行的。因此主要分为以下进步:
A. 得到130这个数据的二进制

由于130为正数,因此原码、反码和补码都一样,为:
00000000 00000000 00000000 10000010

B. 截取操作

由于130为int型,字节数大于byte类型字节数,因此要进行截取,如下所示:10000010 ,这个是补码

C. 已知补码求原码

类型符号位数值位
补码10000010
反码10000001
原码11111110

所以最后结果为-126

题目3:

写出下列输出结果:
System.out.println(“hello”+’a’+1);
System.out.println(‘a’+1+”hello”);
System.out.println(“5+5=”+5+5);
System.out.println(5+5+”=5+5”);

答案3:

class DataTypeDemo9 {
    public static void main(String[] args) {
        System.out.println("hello"+'a'+1); //helloa1
        System.out.println('a'+1+"hello"); //98hello

        System.out.println("5+5="+5+5); //5+5=55
        System.out.println(5+5+"=5+5"); //10=5+5
    }
}

字符串数据和其他数据做+,结果是字符串类型。这里的+不是加法运算,而是字符串连接符。并且按照自左向右运算

未完待续!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值