一、Java发展历程
1.Java发展历程
(1). Java概述
-
Oak:Java前身
-
主要设计者 James Gosling
-
jdk 常用1.8
-
JAVA SE JAVA EE JAVA ME
(2). Java语言的特点
简单易学:Java语法相对简单,与C++相比减少了一些复杂的特性,使得初学者更容易上手。 面向对象:Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的特性,有助于提高代码的可重用性和灵 活性。 跨平台性:Java程序可以在不同的操作系统上运行,只需要将源代码编译成字节码文件(.class文件),然后在Java虚拟 机(JVM)上执行。这种跨平台性使得Java成为一种广泛应用于互联网和移动设备开发的语言。 垃圾回收:Java具有自动内存管理机制,也就是垃圾回收机制。程序员不需要手动分配和释放内存,由Java虚拟机负责管理 内存,有效地减少了内存泄漏和段错误等问题。 异常处理:Java提供了异常处理机制,使得程序能够更好地处理错误和异常情况,增强了程序的健壮性和可靠性。 多线程支持:Java内置了对多线程的支持,可以方便地创建和管理多线程程序,实现并发编程。 安全性:Java有严格的安全性机制,包括类加载机制、字节码验证和安全沙箱等,可以防止恶意代码的执行和访问系统资源。 丰富的类库:Java拥有丰富的标准类库和第三方类库,提供了大量的API,可以简化程序开发,提高开发效率
JVM:Java 虚拟机 JRE:Java运行时环境(JVM+类库) 1/后面编写代码时在强调类库 JDK:Java开发工具包(JRE+编译工具)
2.编写运行java程序的步骤
-
编写源代码,保存到源代码文件中,例如 HelloWorld.java
-
编译源代码,例如javac HelloWorld.java
-
执行字节码,例如java HelloWorld 案例HellowWorld public class HelloWorld { System.out.println("你好"); } } 注意: 源文件的名称必须是文件中主类的名称,扩展名必须为.java class文件的名称是类的名称,扩展名为.class
3.main()方法
-
只能是小写main 在前面 public static void 三个缺一不可
-
参数: a. 类型为字符串数组 b. 名称只要符合Java中标识符命名要求即可 c. 声明的两种方式:String[] args, 或 String args[]
二、注释、分隔符、代码块、标识符等
2.1.注释以及分隔符代码块
-
单行注释 //
-
多行注释 /* */
-
文档注释 /* *
-
javadoc 命令可以文档注释中的内容提取出来,将其放入到一个HTML文件中。文档注释方便了 程序的文档化。
-
分隔符 ;
-
可以利用空格进行缩进,代码美化
-
{} 代码块
2.2.标识符
2.2.1概念
类,方法,和变量
javadoc命令可以文档注释中的内容提取出来,将其放入到一个HTML文件中。文档注释方便了程序的文档化。
2.2.2语法要求
(1) 以字母、数字、_或$组成 (2) 不能以数字开头 (3) 不能使用关键字
注意: a.标识符没有长度限制 b.Java是大小写敏感的,所有标识符区分大小写
2.2.2命名规范
Java中的标识符通常是由多个英文单词构造,每个单词除了首字母外其他字母小写。
2.2.2.1. 大驼峰
第一个单词的首字母大写。以大写字母开头,用于类名、接口名 class Accoun {…} //类名 class HelloWorld{…} //类名 interface AccountBase {…} //接口名
2.2.2.2. 小驼峰
第一个单词的首字母是小写,其他单词的首字母大写。以小写字母或单词开头,用于变名、方法名 String studentName; //变量名 String getStudentName() {…} //方法名
2.2.2.3. 常量的命名规范
常量是使用final修饰的存储单元。(最终的) 全部为大写字母表示 final public int DAYS_WEEK = 7; final public double PI = 3.1415926;
2.3、Java关键字
目前定义了50个关键字
abstract | continue | for | new | switch |
---|---|---|---|---|
assert | default | goto | package | synchronized |
boolean | do | if | private | this |
break | double | implement | pretected | throw |
byte | else | import | public | throws |
case | enum | instanceof | return | transient |
catch | extends | int | short | try |
char | final | interface | static | void |
class | finally | long | strictfp | volatile |
const | float | native | super | while |
其中还有const和goto关键字但是没使用;java还保留了下面这些关键字:true、false和null。这些关键字是Java定义的数值。
2.4、基本数据类型
2.4.1分类
2.4.1.1. 基本数据类型
a.数值型 (1)整数类型(byte short int long) (2)浮点类型(float double) b.字符型(char) c.布尔型(boolean)
2.4.1.2. 引用数据类型
类(class) 接口(interface) 数组
注意:基本数据类型也可以分成两大类:数值型、布尔型
2.4.2整型
Java不支持无符号的、只是正值的整数。
2.4.2.1.类型、宽度、和范围
名 称 | 宽 度 | 范 围 |
---|---|---|
long | 64/8 | -9 223 372 036 854 775 808至9 223 372 036 854 775 807 |
int | 32/4 | -2 147 483 648至2 147 483 647 大约21亿 |
short | 16/2 | -32 768至32 767 |
byte | 8/1 | -128至127 |
2.4.2.2.字面值
(1) 整数字面值默认是int类型 (2) 将字面值赋给byte或short变量时,如果字面值位于目标类型的范围之内,就不产生错误。 (3) 大写或小写的L明确地标识其类型为long (3) 在字面值可以包含下划线,例如1_000_000_000 (4) 十进制、八进制(0)、十六进制(0X/0x)、二进制(0B/0b)
2.4.3浮点型
浮点数,也称为实数(real number),当计算需要小数精度的表达式时使用。
2.4.3.1. 类型、宽度、和范围
名称 | 宽度(位) | 大致范围 |
---|---|---|
double(双精度) | 64/8 | 4.9e-324~1.8e+308 |
float (单精度) | 32/4 | 1.4e-045~3.4e+038 |
2.4.3.2.字面值
(1) 默认为double类型,为了指定float字面值,需要使用后缀F或f (2) 科学计数法。例如6.022E23、314159E-5、2e+100
2.4.4字符型
2.4.4.1.char类型与字符编码
(1)char是16位,Java在内部使用16位的整数表示字符(Unicode编码),char类型的范围0~65536。//全世界基本的语言符号基本都包含了 (2)char也可以用作整数类型,可以将整型字面值赋给char类型的变量,可以在char类型上执行算术运算。 (3)26个小写字母、26个大写字母、以及10个数字0-9,其编码是连续的。
2.4.4.2.字面值
(1) 字符型字面值用单引号的字符表示''。 (2)转义字符
转义序列 | 描 述 |
---|---|
\ddd | 八进制字符(ddd) |
\uxxxx | 十六进制Unicode字符(xxxx) |
\’ | 单引号 |
\” | 双引号 |
\ | 反斜杠 |
\r | 回车符 |
\n | 新行符(也称为换行符) |
\f | 换页符 |
\t | 制表符 |
\b | 回格符 |
(3)字符串类型:
字符串类型是String,String是类,所以是引用类型。字符串字面值是使用双引号包围起来的内容。
2.4.5布尔型
(1)boolean类型表示逻辑值,它只能是true或false。 (2)boolean类型的值与整数0和1没有任何关系
2.5、变量/常量与方法
2.5.1.变量的声明与赋值
说明:变量表示存储单元,变量名就是存储单元的名称,变量初始化之后就可以通过变量名访问存储单元。 1、变量声明 int i; String str; //还没有分配存储空间 2、初始化(赋初值) i=10; str=”abc”; //初始化之后就分配了存储空间 3、声明并赋值 int i = 10; String str=”abc”; //声明的同时进行初始化 注意:变量在使用之前必须先初始化(赋初值)。
2.5.2.常量的声明与赋值
声明常量需要使用final关键字,如,final double PI = 3.1415926。 常量通常在声明时赋值,并且赋值之后其值不能改变 常量标识符通常全部为大写。
2.5.3.实例变量与局部变量
根据变量声明的位置,变量可以分为实例变量和局部变量。
2.5.3.1示例变量以及作用范围
-
类的{}里面定义的变量是全局变量
-
作用范围:整个类中都可以使用
-
实例变量在创建对象时会自动初始化,并有初始值(默认值) byte/short/int:0 long:0L float:0.0f double:0.0 boolean:false 引用类型:null
2.5.3.2局部变量及作用范围
-
在方法中或代码块{}中定义的变量,称之为局部变量。
-
作用范围:直接包含它的{}内有效
-
局部变量不会自动初始化,没有默认值,使用之前必须要初始化。
2.6、类型转换
·Java中类型转换分自动类型转换和强制类型转换。
总结:对于数值类型,如果目标类型的范围包含了原类型的范围,则可以自动转换,否则就需要强制转换。
2.6.1自动类型转换
类型兼容、小类型转换为大类型 byte-->int short--->int int--->long long--->float float--->double String--->Object (子类--->父类)
2.6.2强制类型转换
大类型转换为小类型 int-->byte int--->short long--->int float--->long double--->float Object--->String