耳中人

导航

Java基础

Java基础语法

目录

  1. 注释、标识符、关键字

  2. 数据类型

  3. 类型转换

  4. 变量、常量

  5. 运算符

  6. 包机制、JavaDoc

第一部分

Java中的注释有三种:

  • 单行注释

  • 多行注释

  • 文档注释

(具体使用效果如图所示,注释并不会影响编译效果,同时注释是一个良好的习惯)

关键字

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符

常见的关键字

标识符的注意点

  • 所有标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始

  • 首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划线(_)或数学的任何字符组合

  • 不能使用关键字作为变量名或者方法名

  • 标识符是大小写敏感

    String Man="qwe";
    String man="asd";  //两者是不一样的

     

  • 合法标识符举例:age、$salary、_value、__1_value

  • 非法标识符举例:123abc、-salary、#abc、@abc

  • 可以使用中文命名,但是不建议使用,同样也不建议使用拼音,不易他人理解。

第二部分

数据类型

强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义才能使用。

弱类型语言:某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换

Java的数据类型分为两大类

  • 基本类型(primitive type)

    Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

    byte:

    • byte 数据类型是8位、有符号的,以二进制补码表示的整数;

    • 最小值是 -128(-2^7)

    • 最大值是 127(2^7-1)

    • 默认值是 0

    • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

    • 例子:byte a = 100,byte b = -50。

    short:

    • short 数据类型是 16 位、有符号的以二进制补码表示的整数

    • 最小值是 -32768(-2^15)

    • 最大值是 32767(2^15 - 1)

    • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;

    • 默认值是 0

    • 例子:short s = 1000,short r = -20000。

    int:

    • int 数据类型是32位、有符号的以二进制补码表示的整数;

    • 最小值是 -2,147,483,648(-2^31)

    • 最大值是 2,147,483,647(2^31 - 1)

    • 一般地整型变量默认为 int 类型;

    • 默认值是 0

    • 例子:int a = 100000, int b = -200000。

    long:

    • long 数据类型是 64 位、有符号的以二进制补码表示的整数;

    • 最小值是 -9,223,372,036,854,775,808(-2^63)

    • 最大值是 9,223,372,036,854,775,807(2^63 -1)

    • 这种类型主要使用在需要比较大整数的系统上;

    • 默认值是 0L

    • 例子: long a = 100000L,Long b = -200000L。 "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

    float:

    • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;

    • float 在储存大型浮点数组的时候可节省内存空间;

    • 默认值是 0.0f

    • 浮点数不能用来表示精确的值,如货币;

    • 例子:float f1 = 234.5f。

    • float类型要在数字后面加个F

    double:

    • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;

    • 浮点数的默认类型为 double 类型;

    • double类型同样不能表示精确的值,如货币;

    • 默认值是 0.0d

    boolean:

    • boolean数据类型表示一位的信息;

    • 只有两个取值:true 和 false;

    • 这种类型只作为一种标志来记录 true/false 情况;

    • 默认值是 false

    • 例子:boolean flag = true。

    char:

    • char 类型是一个单一的 16 位 Unicode 字符;

    • 最小值是 \u0000(十进制等效值为 0);

    • 最大值是 \uffff(即为 65535);

    • char 数据类型可以储存任何字符;

    • 例子:char letter = 'A';。

  • 引用类型(reference type)

    引用数据类型在内存中存放的是指向该数据的地址,不是数据值本身,它往往由多个基本数据类型组成,因此,对引用数据类型的应用称为对象引用,引用数据类型也被称为复合数据类型,在有的程序设计语言中称为指针。

    • 类、接口、数组都是引用数据类型

    • 所有引用类型的默认值都是null。

扩展

Java语言定义了4类共8种基本类型,其中4种整型、2种浮点型、1种布尔型和1种字符型,它们的分类及关键字如下。

  • 整型:byte、short、int、long、

  • 浮点型:float、double

  • 布尔型:boolean

  • 字符型:char

  1. 整型

    Java语言的整数有三种进制的表示形式。

    • 十进制:用0~9的数字表示,如123和-100,其首位不能为0.

    • 八进制:以0开头,后跟多个0~7的数字0123.

    • 十六进制:以0x或0X开头,后跟多个0~9的数字或a~f的小写字母或A~F的大写字母,a~f或A~F均表示值10~15,如0X123E。

第三部分

类型转换

由于数值型分为不同的类型,所以数值型数据有类型转换问题。数值型数据的类型转换分为自动类型转换和强制类型转换两种。

  1. 自动类型转换

    在程序中已经定义好的数值型的变量,若是想以另一种数值类型表示时,Java语言会在下列条件同时成立时,自动进行数据类型转换。

    • 转换前的数据类型与转换后的类型兼容。

    • 转换后数据类型的表示范围比转换前数据类型的表示范围大。

      • 上述不同类型的数据进行运算时,需先转换为同一类型,然后进行运算。转换从“低”到“高”的优先关系为:

  2. 强制类型转换

    如果要将较长的数据转换成较短的数据时,就要进行强制类型转换。强制类型转换的格式如下:

    (欲转换的数据类型)变量名

    int i=128;
    byte b = (byte)i;//会产生溢出,故在为保证运算的正确性,应认识数据类型字节范围

    特殊例题认识:

第四部分

变量

  • 变量是什么: 可以变化的量,变量的值在程序运行中是可以改变的。

  • Java是一种强类型语言,每个变量都必须声明其类型。(使用变量的原则是“先声明后使用”,即变量在使用前必须先声明。)

  • Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。

      type   varName  [=value]  [{,varName[=value]}];
    //数据类型 变量名   [=初值][,变量名[=初值]······];; 可以使用逗号隔开来声明多个同型变量。  

变量的作用域

  • 类变量

  • 实例变量

  • 局部变量

public class Demo4 {

   //类变量 static
   static double salary = 3.1415926;
   
   //实例变量:出属于对象;如果不自行初始化,即显示这个类型的默认值,除了基本类型,其余的默认值为null;
   String name;
   int age;

   //main方法
   public static void main(String[] args) {
       //局部变量:必须声明和初始化值(在方法中)
       int i=10;
       System.out.println(i);

       //变量类型 变量名字 = new Demo4();
       Demo4 demo4=new Demo4();
       System.out.println(demo4.age);
       System.out.println(demo4.name);

       //类变量 static
       System.out.println(salary);
  }
}

常量

  • 常量表示在程序中不能被修改的固定值。

  • Java语言中的常量也是有类型的,包括整型、浮点型、布尔型、字符型、和字符串型。

  • 常量声明的形式与变量的声明形式基本一致,只需用关键字final标识,通常final写在最前面。例如;

    final int MAX = 10 ;
    final float PI = 3.14f;

     

第五部分

运算符

算术运算

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。

表格中的实例假设整数变量A的值为10,变量B的值为20:

操作符描述例子
+ 加法 - 相加运算符两侧的值 A + B 等于 30
- 减法 - 左操作数减去右操作数 A – B 等于 -10
* 乘法 - 相乘操作符两侧的值 A * B等于200
/ 除法 - 左操作数除以右操作数 B / A等于2
取余 - 左操作数除以右操作数的余数 B%A等于0
++ 自增: 操作数的值增加1 B++ 或 ++B 等于 21(区别:先进行自增或者自减运算,再进行表达式运算。)
-- 自减: 操作数的值减少1 B-- 或 --B 等于 19(区别: 先进行表达式运算,再进行自增或者自减运算。)

关系运算符

表格中的实例整数变量A的值为10,变量B的值为20:

运算符描述例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (A == B)为假。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 (A> B)为假。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 (A <B)为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 (A> = B)为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (A <= B)为真。

位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

操作符描述例子
如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100
| 如果相对应位都是 0,则结果为 0,否则为 1 (A | B)得到61,即 0011 1101
^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2得到15即0000 1111

位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100     //0-1、0-0、1-0为0,1-1为1;
A | B = 0011 1101   //0-0为0,0-1、1-1、1-0为1
A ^ B = 0011 0001   //0-0、1-1为0,0-1,1-0为1
~A= 1100 0011       //0变1、1变0

逻辑运算符

下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假

操作符描述例子
&& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A && B)为假。
| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 (A | | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 !(A && B)为真

短路逻辑运算符

当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

赋值运算符

下面是Java语言支持的赋值运算符:

操作符描述例子
= 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C - A
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A等价于C = C * A
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A,C 与 A 同类型时等价于 C = C / A
(%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%= A等价于C = C%A
<< = 左移位赋值运算符 C << = 2等价于C = C << 2
>> = 右移位赋值运算符 C >> = 2等价于C = C >> 2
&= 按位与赋值运算符 C&= 2等价于C = C&2
^ = 按位异或赋值操作符 C ^ = 2等价于C = C ^ 2
| = 按位或赋值操作符 C | = 2等价于C = C | 2

条件运算符(?:)

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

variable x = (expression) ? value if true : value if false
int a = 1,b = 2,max;
max = a > b ? a : b;             //max获得a,b之中的较大值
System.out.println("max="+max);  //输出结果为max=2

Java运算符优先级

当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。

再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别操作符关联性
后缀 () [] . (点操作符) 左到右
一元 expr++ expr-- 从左到右
一元 ++expr --expr + - ~ ! 从右到左
乘性 * /% 左到右
加性 + - 左到右
移位 >> >>> << 左到右
关系 > >= < <= 左到右
相等 == != 左到右
按位与 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 | | 左到右
条件 ?: 从右到左
赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
逗号 左到右

第六部分

包机制

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间

  • 包语句的语法格式:

    package   pkg1[.pkg2[.pkg3···]];
  • 一般利用公司域名倒置作为包名;

  • 为了能够使用某一个包的成员,我们需要在java程序中明确导入该包。使用“import”语句可完成此功能

    import package[.package1···].(classname|*);

javaDoc文档

  • JavaDoc命令是用来生成自己API文档的

  • 参数信息

    • @author 作者名

    • @version 版本号

    • @since 指明需要最早使用的jdk版本

    • @param 参数名

    • @return 返回值情况

    • @throws 异常抛出情况

       

  • 通过命令行 javadoc 参数 java文件

    • 例:

      javadoc -encoding UTF-8 -charset UTF-8 Doc.java

       

posted on 2021-05-19 18:53  耳中人  阅读(85)  评论(0编辑  收藏  举报