Java初始入门(二)

来源:互联网 发布:sopcast网络电视下载 编辑:程序博客网 时间:2024/05/18 01:53

关键字

  • 关键字定义

    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. 已知补码求原码

类型 符号位 数值位 补码 1 0000010 反码 1 0000001 原码 1 1111110

所以最后结果为-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    }}

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

未完待续!!!!

0 0