自学JAVA第一天:基础语法

前言

这几天开始自学JAVA,因为有c的基础,所以前面学起来也比较快。也是因为狂神大大讲的也比较细。
这篇随笔是基于狂神大大的讲课内容和笔记总结而成的。

注释

平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到一个注释了。不然代码开始的话只有你和上帝知道,过几天只有上帝知道了。

public class Hello {

    public static void main(String[] args)
    {
        System.out.print("hello world!");


        /**
         System.out.print("hello world!");      多行注释
         */

        //System.out.print("hello world!");     单行注释

    }
}

Java中的注释有三种:
单行注释:只能注释当前行,以//开始,直到行结束

 //System.out.print("hello world!");

多行注释:注释一段文字,以/开始, /结束

 /**
         System.out.print("hello world!");      多行注释
         */

文档注释:用于生产API文档,配合JavaDoc

标识符

Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:

  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或方法名。
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary、#abc
    【 JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的字母的含义:可以表示英文、汉字等等。】

数据类型

Java是一种强类型语言,每个变量都必须声明其类型。

1.强弱类型语言

强类型语言也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
Java、.NET、C++等都是强制类型定义的。也就是说,一旦一个变量被指定了某个数据类型,如果不经过转换,那么它就永远是这个数据类型了。

弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php等就属于弱类型语言

2.数据类型

Java的数据类型分为两大类:基本类型(primitive type)和引用类型 (reference type)
image
【注:引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!】
image

3.浮点型拓展

浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

public class demo {
    public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0/10;
        System.out.println(f==d); //false
        float d1 = 2131231231f;
        float d2 = d1+1;
        if(d1==d2){
            System.out.println("d1==d2");
        }else{
            System.out.println("d1!=d2");
        }
    }
}

运行结果如下
image
由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。最好完全避免使用浮点数比较 !

大数值:Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。

4.字符型拓展

  1. 单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示一个字符串。
  2. char 类型用来表示在Unicode编码表中的字符
  3. Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;(之前还特别疑惑为什么JAVA的char为什么是两个字节,而C只有一个。现在清楚了)
    代码演示
public class demo {
    public static void main(String[] args) {
        char a1 = 'a';
        char a2 = '学';
        System.out.println(a1);
        System.out.println((int) a1);
        System.out.println(a2);
        System.out.println((int) a2);
	}
}

运行如下
image
Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义(和C一样),有如下常用转义字符:
image

5.布尔型拓展

  1. boolean类型(一位,不是一个字节),就是0|1
  2. boolean类型有两个值,true和false,不可以 0 或非 0 的整数替代 true 和 false ,这点和语言不同
  3. boolean 类型用来判断逻辑条件,一般用于程序流程控制

类型转换

  1. 由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换
  2. 整型、实型(常量)、字符型数据可以混合运算
  3. 运算中,不同类型的数据先转化为同一类型,然后进行运算
  4. 转换从低级到高级(根据容量来看)
    image
    数据类型转换必须满足如下规则:
  • 不能对boolean类型进行类型转换
  • 不能把对象类型转换成不相关类的对象
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换
  • 转换过程中可能导致溢出或损失精度

1.自动类型转换

自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型
例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
代码演示:

public class demo {
    public static void main(String[] args) {
        char a='a';
        int b=a;
        System.out.println(a);
        System.out.println(b);
    }
}

运行结果:
image

2.强制类型转换

  1. 强制类型转换,又被称为造型,用于显式的转换一个数值的类型
  2. 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出
  3. 强制类型转换的语法格式: (type)var ,运算符“()”中的type表示将值var想要转换成的目标数据类型。 条件是转换的数据类型必须是兼容的。
    代码演示:
public class demo {
    public static void main(String[] args) {
       double a=3.1415926;
       int b=(int)a;
        System.out.println(b);
    }
}

运行如下
image

变量,常量

1.变量(variable)

  1. Java是一种强类型语言,每个变量都必须声明其类型
  2. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
  3. 变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  • 变量名必须是合法的标识符
  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

2.变量作用域

变量根据作用域可划分为三种:

  • 类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰
  • 实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰
  • 局部变量(lacal variable):类的方法中的变量。
    代码演示
public class demo {
    static int a; //类变量
    String s="hello world"; //实例变量
    public static void main(String[] args) {

    }
   public  void test()
   {
    int a=0; //局部变量
   }
}

局部变量

  • 方法或语句块内部定义的变量。生命周期是从声明位置开始到”}”为止
  • 在使用前必须先声明和初始化(赋初值)
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用

静态变量

  • 使用static定义
  • 从属于类,生命周期伴随类始终,从类加载到卸载
  • 如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

实例变量

  • 方法外部、类的内部定义的变量
  • 从属于对象,生命周期伴随对象始终
  • 如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

3.常量

常量(Constant):初始化(initialize)后不能再改变值,不会变动的值

4.变量的命名规范

  1. 所有变量、方法、类名:见名知意
  2. 类成员变量:首字母小写和驼峰原则 : monthSalary
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线:MAX_VALUE
  5. 类名:首字母大写和驼峰原则: Man, GoodMan
  6. 方法名:首字母小写和驼峰原则: run(), runRun()

运算符

Java 语言支持如下运算符:

  • 算术运算符: +,-,*,/,%,++,--
  • 赋值运算符 =
  • 关系运算符: >,<,>=,<=,==,!= instanceof
  • 逻辑运算符: &&,||,!
  • 位运算符: &,|,^,~ , >>,<<,>>>
  • 条件运算符 ?:
  • 扩展赋值运算符:+=,-=,*=,/=

字符串连接符
“+” 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
代码演示:

public class demo {
    public static void main(String[] args) {
        String s1="hello";
        String s2="world";
        int a=1;
        System.out.println(a+"."+s1+s2);
    }
}

运行效果:
image

运算符优先级
image

posted on 2022-05-08 20:41  阿金_阿金  阅读(67)  评论(1编辑  收藏  举报