Bootstrap

Java的基础知识(一)

一、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程序的步骤

  1. 编写源代码,保存到源代码文件中,例如 HelloWorld.java

  2. 编译源代码,例如javac HelloWorld.java

  3. 执行字节码,例如java HelloWorld 案例HellowWorld public class HelloWorld { System.out.println("你好"); } } 注意: 源文件的名称必须是文件中主类的名称,扩展名必须为.java class文件的名称是类的名称,扩展名为.class

3.main()方法

  1. 只能是小写main 在前面 public static void 三个缺一不可

  2. 参数: a. 类型为字符串数组 b. 名称只要符合Java中标识符命名要求即可 c. 声明的两种方式:String[] args, 或 String args[]

二、注释、分隔符、代码块、标识符等

2.1.注释以及分隔符代码块

  1. 单行注释 //

  2. 多行注释 /* */

  3. 文档注释 /* *

  4. javadoc 命令可以文档注释中的内容提取出来,将其放入到一个HTML文件中。文档注释方便了 程序的文档化。

  5. 分隔符 ;

  6. 可以利用空格进行缩进,代码美化

  7. {} 代码块

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个关键字

abstractcontinuefornewswitch
assertdefaultgotopackagesynchronized
booleandoifprivatethis
breakdoubleimplementpretectedthrow
byteelseimportpublicthrows
caseenuminstanceofreturntransient
catchextendsintshorttry
charfinalinterfacestaticvoid
classfinallylongstrictfpvolatile
constfloatnativesuperwhile
其中还有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.类型、宽度、和范围
名 称宽 度范 围
long64/8-9 223 372 036 854 775 808至9 223 372 036 854 775 807
int32/4-2 147 483 648至2 147 483 647 大约21亿
short16/2-32 768至32 767
byte8/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/84.9e-324~1.8e+308
float (单精度)32/41.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

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;