java基础阶段之一

1、注释、标识符、关键字、保留字

注释

用于注解说明解释程序的文字就是注解

注释的必要性:
平时在编写代码时,代码量比较少时,理解起来还是比较简单的,但是当代码量足够多时,我们就必须注释。

为什么要对代码进行注释:
不仅仅是方便自己,也要方便他人理解自己所编写的程序,从而提高了代码的阅读性。

注释并不会被编译器编译和JVM运行,书写代码是一种良好的习惯

java中的注释主要为三种:

  1. 单行注释://

    public class HelloWorld{
        public static void main(String[] args) {
           //输出一个HelloWorld
            System.out.println("HelloWorld!!!"); 
        }
    }
    

      

  2. 多行注释:/* ...... */

    public class HelloWorld{
        public static void main(String[] args) {
           /*输出一个
                HelloWorld*/
            System.out.println("HelloWorld!!!"); 
        }
    }
    

      

    多行注释可以包含单行注释。

 

  1. 文档注释:/** ...... */

    public class HelloWorld{
       /**
     * 文档注释
     * 解释说明:
     * @author  作者 
     * @version  什么版本
     */
        public static void main(String[] args) {
            System.out.println("HelloWorld!!!");
        }
    }
    

      

标识符

Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符

标识符的必要性:在生活中,你我他都拥有自己的名称,是为了更好辨别谁是谁。所以在编程语言中,标识符是用户编程时自己定义的名字。标识符有一定规范

  1. 标识符由大小写字母、数字、下划线或者$组成的

  2. 标识不能一数字开头,可以以大小写字母、下划线或者$开头

  3. 不可以单独使用关键字和保留字,但能包含关键字和保留字

  4. java中严格区分大小写,长度无限制

  5. 标识符不能包含空格

  6. 标识符不可重复

  7. 可以使用中文命名,但一般不建议这样使用,也不建议使用拼音

为什么要对变量、函数、语句块等元素起标识符:java所有的组成部分都需要名字,说白了当要引用或使用-->变量,函数,语句块,类的时候,就可以使用对应的命名(标识符)。

命名规则:

  1. 包名:多单词组成时所有字母小写:xxxyyyzzz

  2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz

  3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始首字母大写:xxxYyyZzz

  4. 常量名(final 限定):所有字母都大写。多单词时每个单词用下划线连接: XXX_YYY_ZZZ

其中标识符是包含关键字的。

关键字(保留字)

关键字就是程序发明者规定的有特殊含义的单词

关键字的必要性: 在关键的地方使用的单词,体现关键的地方的含义,被java语言赋予了特殊含义,用做专门用途的字符串 。

为什么要有关键字:在开发中,程序员利用关键字来告诉编译器其声明的变量类型、类、方法特性等信息 。

关键字都是小写字母。

访问控制
private    protected    public
类,方法和变量修饰符
abstract    class    extends    final    implements    interface    native    new
static    strictfp    synchronized    transient    volatile
程序控制
break    continue    return    do    while    if    else    for    instanceof    switch
case    default
异常处理
try    cathc    throw    throws
包相关
import    package
基本类型
boolean byte char double float int long short null true false
变量引用
super    this    void

现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标记时要避免使用这些保留字:byValue、cast、future、generic、inner、operator、outer、rest、var、goto、const

2、数据类型

强类型语言

一种强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。

也就是说:当一个变量被指定为某个数据类型,除非经过强制转换,不然这个变量永远是这个数据类型。其中赋值的时候只能赋当前定义的数据类型的值,除非强制过后,才能赋予其他类型值 。

特点:是类型安全的语言

弱类型语言

一种弱类型定义的语言,要求变量的使用要可以不符合定义,所有变量可以不先定义再使用,变量直接使用也行。

也就是说:当一个变量被指定为某个数据类型,这个变量可以任意被赋予其他类型的值。而且该变量可以根据环境变化自动进行转换,不需要经过进行强制转换。

特点: 有更高的开发效率

 

java数据类型分为两大类

1.基本数据类型:

  数值类型:
整数类型: byte 占1个字节,范围:-128~127、 short 占2个字节、
    int 占4个字节、long 占8个字节
浮点类型:float 占4个字节、double 占8个字节
字符类型:char 占2个字节
布尔类型: boolean 占1位,其值只有true 和 false

1bit代表1位
1byte (字节) = 8  bit(位)范围在-128~127

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

char类型是可以进行运算的。因为它都对应Unicode码 ,如果想打印单引号的话 得加 转义字符“\”  

其中除了以上基本数据类型这8中以外,全部都是引用数据类型

//八大基本数据类型
        //整数,整型
        int num1 = 10;  //最常用
        byte num2 = 10;
        short num3 = 10;
        long num4 = 10L;  //long类型要在数字后面加个L
​
        //小数,浮点型
        float num5 = 50.1F; //float类型要在数字后面加个F
        double num6 = 3.1415926535897932;
​
        //字符
        char name = 'Z';
​
        //布尔 
        boolean flag = true;
        boolean flag1 = false;

  

拓展:

  
//整数有关进制表示:二进制0b、十进制、八进制0、十六进制0x
        int i = 0b00000001; //二进制
        int i1 = 10;        //十进制
        int i2 = 010;       //八进制
        int i3 = 0x10;      //十六进制  0~9  A~F(10~15) 例如:0x09 ->9 0x0F-> 15 0x9F ->159
​
        System.out.println(i);  // 1
        System.out.println(i1); // 10
        System.out.println(i2); // 8
        System.out.println(i3); // 16
​
        System.out.println("--------");
​
​
        //银行业务怎么表示钱?是否可以浮点型?
        //不能float  double  有限的,离散,舍入误差,大约(接近但不等于),
        // 因此最好避免使用浮点数表示账号金额,
        // 可以利用数学工具类 BIGDecimal。
        float f = 0.1f;     //0.1
        double d = 1.0/10;  //0.1
​
        System.out.println(f == d);//false
        System.out.println(f);
        System.out.println(d);
​
        float f1 = 1212121212121212f;
        float f2 = f1 + 1;
        System.out.println(f1 == f2);
​
        //字符拓展
        char c1 = 'A';
        char c2 = '张';
        System.out.println(c1);
        System.out.println((int)c1);    //强制转换  输出对应Unicode码
        System.out.println(c2);
        System.out.println((int)c2);    //强制转换  输出对应Unicode码
        //编码 Unicode有对应的编码表, 其中每个字母、数字、字符 都有对应数字表示 占2字节 长度 0~65536
​
        //所有的字符本质还是数字
        //Unicode 正确的表示形式: U0000 UFFFF
        char c3 = '\u0061';     // "\" 为转义字符
        System.out.println(c3); //a
​
​
        // == & equals 比较
        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa == sb);   //false 内存中的地址相等
        System.out.println(sa.equals(sb));  //true  内存中的内容相等
​
        String sc = "hello world";
        String sd ="hello world";
        System.out.println(sc == sd);   //false 内存中的地址相等
        System.out.println(sc.equals(sd));  //true  内存中的内容相等
        // 从内存角度进行分析

 

2.引用数据类型:

   类(class、String字符串类型) 接口(interface)  数组([ ])

String字符串引用类型:字符串由0到多个字母数字符号共同组成的一个串,这个串需要双引号括起来,

任何的引用类型,都可以用null作为值,可以在初始化赋值为null String是引用类型,可以使用null作为值

String类是一个典型的不可变类,String对象创建出来就不可能被改变。创建出的字符串将存放在数据区,保证每个字符串常量只有一个,不会产生多个副本,

String s0 =“hello”  String s1 = “hello” String03 = “he”+“ll”+“o”

会在方法区的字符串常量池里只创建有唯一个hello,如果要使用会调用内存地址,再将地址中的hello赋值,所以引用数据类型和基本数据类型 的不同之一    前者创建只是创建一份数据,另外引用数据类型要用的时候会引用已经有相同数据的地址,

而基本数据类型创建时会开辟地址存储当前数据,当创建另外的基本数据类型时则会创建新的地址存储数据。

 

3、类型转换

由于Java是强类型语言,进行某些运算的时候,需要用到类型转换。

按容量(字节)大小排列:
      低-------------------------->高
byte,short,char -> int -> long -> float -> double

  1. byte、short、char之间不会相互转换,三者计算时首先转换为int类型。

  2. 浮点型优先级优于整型

  3. 每一个类型都有对应的容量范围,不能存储超出容量范围的数据,不然会内存溢出。

运算中,不同类型的数据先转换为同一种类型,然后再进行运算。

转换分为:强制类型转换和自动类型转换

强制类型转换

将把变量从字节较小的类型转换为字节较大数据类型:
目标类型 变量名 = (目标类型)变量名
如:

int i = 100;
byte b = (byte) i; //强制转换:目标类型 变量名 = (目标类型)变量名

一般是从大字节向小字节的转换,需要强制转换 高-->低。

自动类型转换

将把变量从字节较大的类型转换为字节较小数据类型:
如:

byte b = 100;
int i = b; //自动转换

一般是从小字节向大字节的转换,会自动转换 低-->高。

注意点:

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换为不相关的类型

  3. 转换的时候可能存在内存溢出,或者精度问题

posted @ 2020-05-11 10:29  陌mo  阅读(157)  评论(0)    收藏  举报