JavaSE的基础语法
1. 语言的发展
机器语言----->汇编语言------>高级程序设计语言
1.1 机器语言
***机器语言***是用二进制代码表示的一种机器指指令系统的集合,里边就包含 0 和 1,能被计算机能直接识别和执行。但它们难于辨别和记忆,给整个产业的发展带来了 障碍
每一个计算机只能理解他自己的机器语言。机器语言对于计算机来说就是自然语言 了,由计算机硬件的设计者定义。机器语言通常由数字串组成(终被简化成 01),对于人类来说,机器语言过于繁琐。
1.2 汇编语言
为了编程的方便,以及解决更加复杂的问题。程序员开始使用英文的缩写的助记符 来表示基本的计算机操作。这些助记符构成了汇编语言的基础。
在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操 作数的地址,也称为符号语言。
1.3 高级程序语言
对于简单的任务,汇编语言可以胜任。但是随着计算机的发展,渗透到了工作生活 的更多的方面,一些复杂的任务出现了,汇编语言就显得有限力不从心(应该说是 程序员使用汇编语言解决复杂问题出现了瓶颈)。于是,出现了高级语言。像 c,c++,java都是高级语言。高级语言允许程序员使用接近日常英语的指令的编写程 序。
高级语言是一种指令集的体系。在这种语言下,其语法和结构更类似汉字或者普通 英文,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以编程。C、 C++、Java、Python、Ruby…
高级编程语言,作为用户层面的编程工具,用户并不需要去了解硬件的结构,而是 去用逻辑的语言去实现想要的目标,但是因为高级编程语言的架构高于汇编,所以 不能编写直接访问硬件资源的系统程序。而且都需要经过中间的 翻译 过程。
2. Java的特性和优势
简单性:
就是c++语法的纯净版。没有头文件,指针运算,结构,联合,操作符重载,虚基 类等等。由于语法基于c,因此学习起来完全不费力。
面向对象:
面向对象是一种程序设计技术,他将重点放在数据(即对象)和对象之间的接口 上。
可移植性:
J2EE是J2SE的扩展,增加了用于服务器开发的类库。如:javax.servlet Enterprise JavaBeans 是一种用来代表企业逻辑的软件组件;JDBC则是让程序人员能直 接在Java内使用的SQL的语法来访问数据库内的数据;Servlet能够延伸服务器的功能,通过 请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技 术;另外还有包括XML、email及transaction等各种应用于服务器端的API。
这个版本是Java平台的核心,它提供了非常丰富的API来开发一般个人计算机上的应用程序, 包括用户接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在互联 网上大放异彩的Applet也属于这个版本。
J2ME是J2SE的内伸,包含J2SE的一部分核心类,也有自己的扩展类,增加了适合微小装置的 类库:javax.microedition.io.*等。
这是JAVA的一个重要的优势。JAVA代码或者说字节码、二进制码可以跨平台的移 植,而不用管具体的操作系统和硬件环境。JAVA本身就是面向网络的,只有在网络 环境中才能显示出他的优势,比如:现在我有一个网络环境,要让我的笔记本和手 机交互,笔记本环境是windows发出一个让手机定时录音的JAVA代码,手机只有简 单Linux内核操作系统,照样可以完美的执行这个代码。
“一次编写,随处运行”:“write once, run anywhere”
JAVA在设计时就很注重移植和跨平台性。比如:JAVA的Int永远都是32位。不像 c++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会 非常麻烦。
高性能:
JIT(JUST IN TIME)即时编译。将一些“热点”字节码编译成本地机器码,并将结果缓 存起来,在需要的时候重新调用。这样的话,使JAVA程序的执行效率大大提高,某 些代码甚至接待c++的效率。随着这种技术的一天天完善,也许有一天会超越编译 代码的效率。
动态性:
就是在需要时将某些代码添加到正在运行的程序中。反射机制。当需要把某些代码 添加到正在运行的程序中时,动态性是一个非常重要的特性。Java的动态特性是其 面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是 C++语言进行面向对象程序设计所无法实现的。
多线程
多线程的使用可以带来更好的交互响应和实时行为。多线程的简单性是Java成为主 流服务器端开发语言的主要原因之一。
安全性
Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精 力,使Java可以构建防病毒,防篡改的系统。
健壮性
Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的 部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。Java 系统仔细检测对内存的每次访问,确认它是合法的,而且不致引起任何问题。不 过,即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃, 而是把该例外抛弃。再通过异常处理机制,程序就会发现这类例外,并加以处理。
3. Java基础语法-关键字
Java关键字是Java语言保留供内部使用的,如 class 用于定义类。 关键字也可以称 为 保留字,它们的意思是一样的。是被系统征用的特殊单词(标识符),而且是被广大 程 序员所认知的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-czpZ0RLH-1601605090564)(C:\Users\杨胜辉\AppData\Local\Temp\1601602531653.png)]
4. Java基础语法-标识符
就是给类,接口,方法,变量等起名字的字符序列。用来查找、定位、标明、唯一 确认内容。 表示类名的标识符用大写字母开始。如: Man , GoodMan 表示方法和 变量的标识符用小写字母开始,后面的描述性词以大写开始。 eat() , eatFood()
Java 标识符有如下命名规则:
标识符必须以字母、下划线_ 、美元符开头。 标识符其它部分可以是字母、下划线“_”、美元符“ ”和数字的任意组合。 Java 标识符大小写敏感,且长度无限制。 不可以是Java的关键字
JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符 集。因此,这里的字母的含义:英文、汉字等等。(不建议大家使用汉字来定义标 识符!)
5. 命名规则(规范)
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则 : monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则: Man, GoodMan
-
方法名:首字母小写和驼峰原则: run(), runRun()
6. 基本数据类型
- Java是一种强类型语言,每个变量都必须声明其类型。
- 类型 占用存储空间 表数范围
- byte 1字节 -128~127 short 2字节 -2^15 ~ 2^15-1 (-32768~32767)。
- int 4字节 -2^31 ~ 2^31-1 (-2147483648~2147483647) 约21亿 。
- long 8字节 -2^63 ~ 2^63-1。
- float 4字节 -3.403E38~3.403E38
- double 8字节 -1.798E308~1.798E308
- char 2字节
- boolean 一位
- Java的数据类型分为两大类:基本类型(primitive type)和引用类型 (reference type)。
- Java中定义了3类8种基本数据类型
- 逻辑型-boolean
- 文本型- char
- 数值型- byte, short, int, long, float, double
7. 运算符
Java 语言支持如下运算符:
- 算术运算符: +,-,*,/,%,++,-
- 赋值运算符 =
- 关系运算符: >,<,>=,<=,==,!=, instanceof
- 逻辑运算符: &&,||,! (两边必须时Boolean类型的)
- 位运算符: &,|,^,~ , >>,<<,>>> (两边可以是Boolean类型的,也可以是int类型的)
- 条件运算符 ?:
- 扩展赋值运算符:+=,-=,=,/=
8. 自动类型转换
- 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。在图 中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时 可能会精度的损失。
- 特例: 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强 制类型转换,只要不超出其表数范围
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLzo10oo-1601605090576)(C:\Users\杨胜辉\AppData\Local\Temp\1601604475744.png)]
9. 强制类型转换
- 强制类型转换(Cast): 强制类型转换,又被称为造型,用于显式的转换一个 数值的类型. 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可 能造成精度降低或溢出。
- 强制类型转换的语法格式: (type)var ,运算符“()”中的type表示将值var想要转 换成的目标数据类型。
double x = 3.14;
int nx = (int)x; //值为3
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char)d);