前言
Java 语言基础由 关键字、标识符、注释、常量、变量、运算符、语句、函数和数组 等组成 。
关键字
关键字就是 Java 语言赋予了特殊含义的单词。像:this、super、class、等,
其的特点是: 关键字都是小写
标识符
标识符是 Java 中包、类、方法、参数和变量的名字,由任意的 大小写字母、数字、下划线_
和 美元符号 $
组成。
标识符不能以数字开头,不能是关键字。
Java 命名规范
包名:多单词组成时所有字母都小写。
例如:xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。
例如:XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
例如:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。
例如:XXX_YYY_ZZZ
注释
注释是 用于注解说明程序的文字,注释的意义是提高代码的阅读性。
注释分类
单行注释
格式:
//注释的文字
多行注释
格式:
/*注释的文字*/
文档注释
格式:
/**注释的文字*/
/**
* 这是Hello World程序。
* @author: deemons
*/
public class Demo {
/*
这是主函数,是程序的入口。
它的出现可以保证程序的独立运行。
*/
public static void main(String[] args) {
//这是输出语句用于将括号内的数据打印到控制台。
System.out.println("Hello World");
}
}
对于单行和多行注释,被注释的文字,不会被 JVM( java虚拟机 )解释执行。所以,即使添加再多的注释,编译后生成的 class 文件占用硬盘的字节不变。
对于文档注释,是 java 特有的注释,其中注释内容可以被 JDK 提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
注释是一个程序员必须要具有的良好编程习惯。将思想通过注释先写出来,再用代码去实现,因为代码仅仅是思想的一种体现形式。
常量
Java中固定不变的、表示不能改变的数值。如:整数、小数等
常亮分类
- 整数常量:所有整数。
- 小数常量:所有小数。
- 布尔型常量:
true
,false
- 字符常量:将一个数字、字母或者符号用单引号
''
标识,如:'a'
- 字符串常量:将一个或者多个字符用双引号(“”)标识,如:
"hello world"
、"a"
、""
(空字符串)。 - null 常量:
null
变量
变量就是内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),用于存储常量数据,该区域的数据可以在同一类型范围内不断变化。
作用:方便与运算。因数据不确定的时候,就定义变量。
特点:变量空间可以重复使用。
变量定义的要素
- 存储的数据类型
- 变量名称
- 变量初始值
变量的作用域和生存期
作用域
从变量定义的位置开始,到该变量所在的那对大括号结束
生命周期
变量从定义的位置开始就在内存中活了,到达它所在的作用域时就在内存中消失了。
数据类型
Java 语言是 强类型 语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
数据类型分类
Java 语言的数据类型包括8种基本类型,3种引用类型。
分类如下:
整数的默认类型是 int 类型,小数的默认类型是 double 类型。
在编译器中,赋值 long 类型时 需在数值后加
L
表示 long 类型,否则默认数值是 int 类型,一旦超过 int 的数值范围,编译器会报错。float 与 double 同理,赋值 float 时 需在数值后加f
表示 float 类型。
类型转换
类型转换在开发中也很常用,简单来说就是类型之间相互的转化,类型转换共分两种,自动类型转换和强制类型转换。
自动类型转换(隐式类型转换)
自动类型转换就是不需要手动对类型进行强制转换,从低级别到高级别,系统自动转。
强制类型转换(显式类型转换)
强制类型转换需要把类型进行手动转换,否则无法正常使用
数据类型级别从低到高为:byte,char,short,(三个平级) –> int –> float –> long –> double
Java 面试经常会出这些类型转换的题目。
运算符号
运算符包括下面几种:
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三目运算符
最不常用的是位运算符,但也是最接近计算机底层的。
算术运算符
+
的几种用法:加法、正数、字符串连接符。除法的时候要注意一个问题:整数相除,只能得到整数。要想得到小数,可以将数据自身*1.0,即将数据自身先转换为浮点型。
赋值运算符
符号:=
, +=
, -=
, *=
, /=
, %=
a += 1; 和 a = a + 1; 的不同点在于,前者编译器在编译的时候,默认进行了 强制类型转换。
比较运算符
比较运算符的结果都是 布尔值( boolean ) 类型。
逻辑运算符
逻辑运算符用于连接两个boolean类型的表达式。
例如,在Java中不可以写成1<x<5
,应该写成 x>1 & x<5
“&” 和 “&&”,”|” 和 “||” 的区别在于,虽然最终结果一样,但 “&&” 和 “||” 具有短路效果。
“&&” 左边是false,右边不执行。
“||” 左边是true,右边不执行。
“&&” 和 “||”在开发中常用,因为可以提高效率。
异或( ^ )与或( | )的不同之处是:当左右都为true时,异或的结果为false,否则都为 true。
位运算符
虽然开发中用的不多,但会在很多源码中看到,因为计算机底层的计算都是位运算。
/*
面试题:请自己实现两个整数变量的交换
*/
class OperatorTest {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b);
//方式1:使用第三方变量(开发中用的)
int c = a;
a = b;
b = c;
System.out.println("a:"+a+",b:"+b);
System.out.println("------------");
//方式2:用位异或实现(面试用)
//左边:a,b,a
//右边:a ^ b
a = a ^ b;
b = a ^ b; //a ^ b ^ b = a
a = a ^ b; //a ^ b ^ a = b
System.out.println("a:"+a+",b:"+b);
//方式3:用变量相加的做法
a = a + b; //a=30
b = a - b; //b=10
a = a - b; //a=20
System.out.println("a:"+a+",b:"+b);
*
//方式4:一句话搞定
b = (a+b) - (a=b); //b=30-20=10,a=20
System.out.println("a:"+a+",b:"+b);
}
}
三目运算符
格式:
(条件表达式) ? 表达式1 : 表达式2
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2。
int a=3,b=4,c;
c = (a>b)?a:b;//c变量存储的就是两个数的最大数。