Java 基础语法
一、关键字
定义:被 Java 赋予特殊含义的单词。
特点:基本上都是英文小写。
用于定义数据类型的关键字
基本数据类型
整数型(默认为 int)
byte(8 位,1 字节,默认值是 0,最大存储数据量是 2^8-1,数据范围是 -2^7 ~ 2^7-1 之间)
short(16 位,2 字节,默认值是 0,最大存储数据量是 2^16-1,数据范围是 -2^15 ~ 2^15-1 之间)
int(32 位,4 字节,默认值是 0,最大存储数据量是 2^32-1,数据范围是 -2^31 ~ 2^31-1 之间)
long(64 位,8 字节,默认值是 0L,最大存储数据量是 2^64-1,数据范围是 -2^63 ~ 2^63-1 之间)
浮点型(默认为 double)
float(32 位,4 字节,默认值是 0.0f,范围是 -3.40E38 ~ 3.40E38 之间)
double(64 位,8 字节,默认值是 0.0d,范围是 -1.79E308 ~ 1.79E308 之间)
字符型
char(16 位,2 字节,Unicode 码,最小值是 \u0000(0),最大值是 \uffff(65535))
布尔型
boolean(1 位,默认值是 false)
引用数据类型
class(类)
interface(接口)
enum(枚举)
数组
注解
void(用于方法(函数)上表示无返回值类型)
用于定义数据类型值的关键字
true(真)
false(假)
null(空)
用于定义流程控制的关键字
判断
if
else
switch
case
default
循环
for
while
do
继续循环
continue
结束循环或选择语句
break
返回
return
用于定义访问权限修饰符的关键字
public(公有的)
protected(受保护的)
private(私有的)
用于定义类、方法(函数)、变量修饰符的关键字
abstract(抽象的)
static(静态的)
final(最终的)
synchronized(同步的)
enum(枚举)
用于定义类与类之间关系的关键字
extends(继承)
implements(实现)
用于定义建立实例、引用实例及判断实例的关键字
new(建立实例)
this(当前引用)
super(父类引用)
instanceof(判断对象类型)
用于异常处理的关键字
try(检查异常)
catch(捕获异常)
finally(最终执行)
throw(抛出异常)
throws(抛出异常)
用于包的关键字
package(创建包)
import(导入包)
用于其它修饰的关键字
native(本地)
strictfp(strict float point)(精确浮点)
volatile(类型修饰符)
transient(变量修饰符)
assert(断言)
注:main 不是关键字,只是被虚拟机(JVM)所识别的一个名称标识。
二、标识符
- 定义:程序中自定义名称,由 26 个大小写英文字母、数字 0 ~ 9、符号 _$ 组成。
- 定义合法标识符的规则:
不允许数字开头。
不允许使用关键字。
注:
1. Java 中严格区分标识符的大小写。
2. 为了提高可阅读性,起名字时,要有意义。
- 名称规范:
包名:多个单词组成时,所有字母都小写。
例如:xxxyyyzzz
类/接口名:多单词组成时,所有单词的首字母大写。
例如:XxxYyyZzz
变量/方法(函数)名:多单词组成时,第一个单词首字母小写,第二个单词开始,每个单词首字母大写。
例如:xxxYyyZzz
常量名:所有字母都大写,多单词组成时,每个单词用_(下划线)连接。
例如:XXX_YYY_ZZZ
三、常量
定义:Java 中固定不变的、表示不能改变的值。
Java 中常量的分类:
1. 整数常量:所有整数。
十进制:0 ~ 9,满 10 进 1。
八进制:0 ~ 7,满 8 进 1,用 0 开头来表示。
十六进制:0 ~ 9、A ~ F,满 16 进 1,用 0x 开头来表示。
2. 小数常量:所有小数。
3. 布尔型常量:true、false。
4. 字符常量:将一个数字/字母/符号用单引号('')标识。
5. 字符串常量:将一个或者多个字符用双引号("")标识。
6. null 常量:null。
进制的基本转换:
十进制转换为二进制
例如:9 的二进制算法
9 / 2 = 4 —— 1(余数)
4 / 2 = 2 —— 0(余数)
2 / 2 = 1 —— 0(余数)
1 除不尽(最后余数)
结果要从下往上写,9 的二进制为:1001。
二进制转换为十进制
例如:1100 的十进制算法
2^3 × 1 + 2^2 × 1 + 2^1 × 0 + 2^0 × 0 = 12
十进制转二进制,除 2 取余数倒写;二进制转十进制,乘 2 的幂数。
十进制、八进制、十六进制的互转,类似十进制与二进制的方法;亦可先讲十进制转换为二进制,再把二进制转换为八进制或十六进制(一个八进制位相当于三个二进制位,一个十六进制位相当于四个二进制位)。
负数的二进制表现形式:将二进制对应的数取反,然后加 1 即可(注:负数的最高位都为 1)。
例如:-6 的二进制
6 的二进制为 0000 0000 0000 0000 0000 0000 0000 0110
取反为 1111 1111 1111 1111 1111 1111 1111 1001
加 1 后的最终结果为 1111 1111 1111 1111 1111 1111 1111 1010
四、变量
- 定义:内存中的一个存储空间,有自己的名称(变量名)和类型(数据类型)。
- 作用:用来存放同一类型的数据,并且可以重复使用。
- 格式:数据类型 变量名 = 初始值;
- 类型的自动提升:
运算中,低类型与高类型进行数据计算时,会自动将表达式中的低类型提升为高类型。
例如:
byte b = 3;
int c;
c = b + 2;//b 会自动提示为 int 类型,再进行运算。
- 强制类型转换:
当需要进行类型数据变换时,可以进行强制转换。
例如:
byte b = 3;
b = b + 4;//报错
b = (byte)b + 4;//强制类型转换,强制将 b + 4 的结果转换为 byte 类型,再赋值给 b
五、运算符
算术运算符
*(乘)
例如:3 * 4 = 12;
/(除)
例如:5 / 5 = 1;
%(取模)
例如:5 % 5 = 0;
注:取模运算时,如果存在负数,运算结果取决于运算式左边有没有负数。
-(减)
例如:6 - 4 = 2;
-(负号)
例如:i = 4; -i; -4;
+(加)
例如:5 + 5 = 10;
+(正号)
例如:i = 3; +i; 3;
+(字符串相加)
例如:"He" + "llo" = "Hello";
注:字符串数据和任何数据使用 + 相连接,最终都会变成字符串。
++(自增)(前)
例如:a = 2; b = ++a; a = 3; b = 3;
++(自增)(后)
例如:a = 2; b = a++; a = 3; b = 2;
--(自减)(前)
例如:a = 2; b = --a; a = 1; b = 1;
--(自减)(后)
例如:a = 2; b = a--; a = 1; b = 2;
赋值运算符
=(等于)
例如:int i = 3;
+=(加等于)
例如:int a = 3; a += 5;//等同于 a = a + 5;
-=(减等于)
例如:int a = 3; a -= 5;//等同于 a = a - 5;
*=(乘等于)
例如:int a = 3; a *= 5;//等同于 a = a * 5;
/=(除等于)
例如:int a = 3; a /= 5;//等同于 a = a / 5;
%=(模等于)
例如:int a = 3; a %= 5;//等同于 a = a % 5;
比较运算符
<(小于)
例如:3 < 5; true;
>(大于)
例如:3 > 5; false;
<=(小于等于)
例如:3 <= 5; true;
>=(大于等于)
例如:3 >= 5; false;
!=(不等于)
例如:3 != 5; true;
==(等等于)
例如:3 == 5; false;
instanceof(检查是否为类的实例对象)
例如:"Hello" instanceof String; true;
注:比较运算符的结果都是 boolean 型,要么是 true,要么是 false。
逻辑运算符
概念:逻辑运算符是用于连接 boolean 类型的表达式 !(非)
例如:! true; false;
注:结果为相反
^(异或)
例如:true ^ false; true;
注:两边相同,结果为 false; 两边不同,结果为 true。
&(与)
例如:true & false; false;
注:两边有一个为 false,结果为 false; 两边都为 true,结果为 true。
|(或)
例如:true | false; true;
注:两边有一个为 true,结果为 true; 两边都为 false,结果为 false。
&&(双与)
例如:true && false; false;
注:如果左边为 true,右边才参与运算;如果左边为 false,右边不参与运算。
||(双或)
例如:true || false; true;
注:如果左边为 false,右边才参与运算;如果左边为 true,右边不参与运算。
位运算符
~(反码)
注:二进制进行取反。
^(异或)
注:相同的二进制,结果为 0;不同的二进制,结果为 1。
&(与)
注:有 0 时,结果为 0。
|(或)
注:有 1 时,结果为 1。
<<(左移)
注:被移除的高位丢弃,空缺位都补 0。
>>(右移)
注:被移除的最高位为 0,右移后,低位丢弃,空缺位补 0;被移除的最高位为 1,右移后,低位丢弃,空缺位补 1。
>>>(无符号右移)
注:被移除的最高位无论是 0 或者是 1,空缺位都补 0。
三元运算符
格式:(条件表达式)? 表达式 1: 表达式 2;
注:
如果条件表达式结果为 true,执行表达式 1;
如果条件表达式结果为 false,执行表达式 2。
例如:
int x = 3, y = 5, z;
z = (x > y)? x : y;//x > y? 的结果为 false,执行表达式 2
z = 5;//y 的值赋给 z
运算符的优先级如下:
六、转义字符
概念:通过 \ 来转变后面字母或者字符的含义。
常用转义字符:
\':单引号
\":双引号
\\:反斜杠
\b:退格
\n:换行
\r:回车
\t:制表符,相当于 tab 键
七、数组
概念:同一种数据类型的集合。也就是说,用来装数据类型的容器,被称为集合。
好处:可以自动给数组中的元素添加编号,编号从 0 开始,方便操作元素。
格式:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
例如:int[] arr = new int[3];
元素类型[] 数组名 = new 元素类型[]{元素 1,元素 2,元素 3,…};
例如:int[] arr = new int[]{1,2,3};
元素类型[] 数组名 = {元素 1,元素 2,元素 3,…};(简化的静态初始化格式)
例如:int[] arr = {1,2,3};
注:new 是用来在堆内存中产生容器实体。
数组是引用数据类型,内存分配如下:
注:
1. System.out.println(arr);//输出的结果为一个哈希值,也称为地址值。
2. 数组在堆内存中开辟空间后,都会有默认的初始值,各个数据类型对应各各自的初始值。如:int 默认 0。
3. 堆内存开辟空间保存数据,桟内存保存对应的哈希值,通过哈希值指引到堆内存中的数据。
内存初步了解:
1. 程序运行时,需要在内存中分配对应的空间。为了提高运算的效率,对内存空间进行了不同区域的划分,每一片区域都有特定的处理数据方式和内存管理方式。
2. 桟内存:
用于存储局部变量,数据使用完毕,占用空间会自动释放。
3. 堆内存:
1. 通过 new 建立的实例都存储在堆内存中。
2. 每一个实体都有内存地址值。
3. 实体中的变量都有默认初始值。
4. 实体在不被使用的时候,在不确定的时间内会被垃圾回收器回收。
数组操作的常见问题:
1. NullPointerException(空指针异常)
例如:
int[] arr = null;
System.out.println(arr[0]);//NullPointerException
注:数组的引用没有指向实体,却操作实体中的元素,就会报出 NullPointerException(空指针异常)。
2. ArrayIndexOutOfBoundsException(数组脚标越界异常)
例如:
int[] arr = new int[3];
System.out.println(arr[5]);//ArrayIndexOutOfBoundsException
注: 访问了数组中不存在的脚标时,就会报出 ArrayIndexOutOfBoundsException(数组脚标越界异常)。
数组的常见操作:
排序:常见的简单排序方式有选择排序和冒泡排序。
选择排序:
冒泡排序:
查找:最常见的查找方式有折半查找(二分查找)。
折半查找:
进制转换:十进制转换为二进制、八进制、十六进制等。
数组中的数组:多维数组。
常见的二维数组
格式:
元素类型[][] 数组名 = new 元素类型[一维数组的个数][一维数组的元素个数或数组长度];
例如:int[][] arr = new int[2][3]; arr[0][0] = 58;
说明:这种格式表示定义了名称为 arr 的二维数组。二维数组中有 2 个一维数组,每个一维数组中有 3 个元素,一维数组的名称分别是 arr[0],arr[1],并且给第一个一维数组的 0 脚标元素赋值 58。
元素类型[][] 数组名 = new 元素类型[一维数组的个数][];
例如:int[][] arr = new int[2][];
注:这种格式中的每一个一维数组的默认初始值都为 null。
元素类型[][] 数组名 = {{元素 1,…},{元素 1,元素 2,…},{元素 1,元素 2,元素 3,…},…};(简化的静态初始化格式)
例如:int[][] arr = {{2,3}{3,5,8},{8,10,12,15}};
二维数组的内存分配如下:
八、程序流程控制
- 程序流程控制也成为语句,主要有:判断结构、选择结构、循环结构。
判断结构(if)
1. if(条件表达式){
执行语句;
}
2. if(条件表达式){
执行语句;
}else{
执行语句;
}
3. if(条件表达式){
执行语句;
}else if(条件表达式){
执行语句;
}
…
else{
执行语句;
}
注:
每一种格式都是单条语句;
当第二种格式的执行语句都是有值出现的情况下,可以用三元运算符表示,简化 if else 的代码;
无论条件表达式是什么样,条件表达式的结构不是 true 就是 false。
选择结构(switch)
switch(条件表达式){
case 取值 1:
执行语句;
break;
case 取值 2:
执行语句;
break;
case 取值 3:
执行语句;
break;
…
default:
执行语句;
break;
}
注:
取值的类型有:byte、short、int、char、enum(JDK5 以后支持)、String(JDK7 以后支持);
case 与 default 没有书写顺序要求,先执行 case,如果没有匹配的 case 再执行 default;
如果匹配的 case 或者 default 没有对应的 break,程序会继续向下执行,运行可执行的语句,直到结束。
结束的两种情况:
1. 遇到 break,跳出 switch 并结束。
2. 执行到 switch 的结尾即是结束。
switch 相对于 if 有效率更高的优势,因此在符合 case 取值类型的情况下,建议优先使用 switch。
循环结构(for、while、do while)
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;
}
注:
初始化表达式只执行一次;
循环条件表达式结果为 true,进入循环体执行语句,然后再执行循环后的操作表达式;
再次执行循环条件表达式,重复执行这个过程,直到循环条件表达式的结果为 false 为止,结束循环。
while(循环条件表达式){
执行语句;
}
注:
先判断循环条件,结果为 true 才进入循环体执行语句。
do{
执行语句;
}while(循环条件表达式);
注:
先进入循环体执行语句,再判断循环条件,结果为 true 才继续进入循环体执行语句;
无论条件是否为 true,循环体的执行语句至少都会执行一次。
其它流程控制语句(break、continue)
break(跳出)语句:选择结构和循环结构中使用。
continue(继续)语句:循环结构中使用。
注:
如果脱离对应的结构语句,单独使用是没有意义的;
continue 语句是结束本次循环,继续进入下一次循环;
break 和 continue 语句的后面不允许有其它语句,因为不会向下执行。
九、函数(方法)
概念:定义在类中,具有特定功能的一段独立小程序,称为函数,也称为方法。
格式:
修饰符 返回值类型 函数名(参数类型 形式参数 1,参数类型 形式参数 2,参数类型 形式参数 3,…){
执行语句;
return 返回值;
}
说明:
返回值类型:函数运行后结果的数据类型。
参数类型:形式参数的数据类型。
形式参数:变量,用于储存调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:结束函数。
返回值:返回给调用函数的调用者。
特点:
函数只有被调用才会执行;
函数的出现提高了代码的复用性;
定义函数在于可以将功能代码进行封装,以便于对该功能进行复用。
注:
函数只能调用函数,不允许在函数内部定义函数;
对于函数不需要返回值的情况,返回值类型可以使用关键字 void 表示,这样的函数中最后一行的 return 可以省略不写。
重载:在同一个类中,允许存在多个的同名函数,只要参数列表中的个数或者参数类型不同即可。
优势:便于阅读、优化程序。
使用场景:当定义的功能相同,但参与运算的未知内容不同时,此时可以定义一个函数名称以表示功能,以方便阅读,通过不同的参数列表来区分多个同名的函数。
例如:
//返回两个整数的和
public int add(int x,int y){
return x+y;
}
//返回三个整数的和
public int add(int x,int y,int z){
return x+y+z;
}
//返回两个小数的和
public double add(double x,double y){
return x+y;
}
Java 基础语法的更多相关文章
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- Java基础语法(下篇)
Java基础语法(下篇) 内容概要: (1)函数的定义 (2)函数的特点 (3)函数的应用 (4)函数的重载 ...
- Java基础语法(上篇)
Java基础语法(上篇) 知识概要: (1)关键字的表示与规范 (2)标示符 (3)注释 (4 ...
- java——基础语法
java基础语法 1.关键字:java赋予特殊含义的单词. 2.标识符:程序中开发人员自定义的名词,例如:类名,函数名,变量名(注意事项:①不能以阿拉伯数字开头②不能采用关键字). 3.常量:固定的数 ...
- java基础语法(二)--单列模式
java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...
- java基础语法(一)
java基础语法(一) 1.类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成 对象(Object).对象又叫做实例(Instance). 2.类由两大部分构成:属性 ...
- Java基础语法入门01
Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...
- Java匹马行天下之JavaSE核心技术——Java基础语法
Java基础语法 一. 认识Java 1. Java 简介 java 是一种高级的面向对象的程序设计语言,使用Java语言编写的程序时跨平台的.从pc到手机,都有Java开发的程序和游戏,Java ...
- JAVA基础语法——标识符、修饰符、关键字(个人整理总结)
JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1 什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...
- JavaSE入门学习7:Java基础语法之语句(下)
继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...
随机推荐
- MatplotLib常用基本操作
本文记录matlibplot常用基本操作,都是基本功能,不涉及复杂联合操作,其中各用法详细用法可参考官网: 1. 基本画图操作 ##mofan_matplotlib.pyplot import mat ...
- 深入浅出数据结构C语言版(16)——插入排序
从这一篇博文开始,我们将开始讨论排序算法.所谓排序算法,就是将给定数据根据关键字进行排序,最终实现数据依照关键字从小到大或从大到小的顺序存储.而这篇博文,就是要介绍一种简单的排序算法--插入排序(In ...
- js 中采用词法作用域
所谓的 词法( 代码 )作用域, 就是代码在编写过程中体现出来的作用范围. 代码一旦写好, 不用执行, 作用范围就已经确定好了. 这个就是所谓词法作用域. 在 js 中词法作用域规则: 1.函数允许访 ...
- JavaScript中你所不知道的Object(一)
Object实在是JavaScript中很基础的东西了,在工作中,它只有那么贫瘠的几个用法,让人感觉不过尔尔,但是我们真的了解它吗? 1. 当我们习惯用 var a = { name: 'tarol' ...
- tkinter第一章
tk1 ------------------------------------------------------------------------------------------ impor ...
- Assert中的静态方法
junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean cond ...
- 团队作业4——第一次项目冲刺(Alpha版本)第一天+第二天+第三天+第四天+第五天+第六天+第七天
冲刺第一天 一.Daily Scrum Meeting照片 二.每个人的工作 1.今天计划完成的任务 GUI.计时功能.题目生成 2.工作中遇到的困难 刚开始在计时功能模块只能做到秒位,经过查询资料后 ...
- 【Alpha】阶段 第六次 Scrum Meeting
每日任务 1.本次会议为第 六次 Meeting会议: 2.本次会议在上午09:35,大课间休息时间在陆大召开,召开本次会议为20分钟,讨论统一下时间安排的问题以及一些程序上的该进: 一.今日站立式会 ...
- 【Alpha】Daily Scrum Meeting——Day6
站立式会议照片 1.本次会议为第五次Meeting会议: 2.本次会议在上午大课间09:40,在禹州楼召开,本次会议为30分钟讨论昨天的任务完成情况以及接下来的任务安排. 燃尽图 每个人的工作分配 成 ...
- 201521123006 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周除了继承,我们还重点学习了多态. (1)多态性在于有相同的形态,却是不同的行为或者说是不 ...