Java基础知识第一讲:基础语法(上)

简介: Java基础知识第一讲:基础语法

推荐书籍

为何学习 Java 基础

  • Java 基础是学习Java EE、大数据、Android开发的基石
  • Java EE
  • 大数据
  • Android 开发

1、Java 编程语言核心结构

Java基础知识图解

计算机语言:人与计算机交流的方式

种类:

第一类语言:机器语言。指令以二级制代码形式存在。

第二类语言:汇编语言。使用助记符表示一条机器指令。

第三代语言:高级语言

  • C、Pascal、Fortran 面向过程的语言
  • C++ 面向过程/面向对象
  • Java 跨平台的纯面向对象语言(现阶段市场需求最多
  • .Net 跨语言的平台
  • Python、Scala等等
1.1、Java 语言概述

概述

  • 由Sun 公司1995年推出的一门高级编程语言
  • 是一种面向Internet 的编程语言
  • 随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言
  • 后台开发使用的语言:Java、PHP、Python、Go、Node.js

Java 在各领域的应用

  • 企业级应用:主要指复杂的大企业软件系统、各种类型的网站。优势:安全机制及跨平台,应用领域包括:金融、电信、交通、电子商务等;
  • Android 平台应用:Android应用程序使用Java语言编写;
  • 大数据平台开发:各类框架有Hadoop, spark, storm, flink等,就这类技术生态圈来讲,还有各种中间件如flume, kafka, sqoop等等 ,这些框架以及工具大多数是用Java 编写而成
  • 移动领域应用:主要表现在消费和嵌入式领域,例如:手机、 PDA、机顶盒、汽车通信设备等

Java语言的诞生

  • James Gosling 团队开发“Green” 项目是,发现 C 缺少垃圾回收系统,可移植的安全性、分布式程序设计和多线程功能
  • Java 语言的变量声明,操作符形式,参数传递,流程控制等方面和 C、C++ 语言完全相同,继承了C++ 语言面向对象技术的核心,舍弃了C语言中容易引起错误的指针(使用引用来取代)、运算符重载、多重继承(使用接口取代),增加了垃圾回收器功能。
  • JDK 1.5引入泛型编程、类型安全的枚举、不定长参数和自动装箱/拆箱

主要特性

  • Java语言是强制面向对象的,支持类之间的单继承,支持接口之间的多继承
  • Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口;
  • Java语言是健壮的。 Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证;
  • Java语言是安全的。 Java通常被用在网络环境中,为此, Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查;
  • Java语言是体系结构中立的。 Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行;
1.2、Java语言运行机制及运行过程

Java 语言特点

特点一: 面向对象

  • 两个基本概念:类、对象
  • 三大特性:封装、继承、多态

特点二: 健壮性

  • 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制

特点三: 跨平台性

  • 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。 “Write once , Run Anywhere”
  • 原理:只要在需要运行 Java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java
    Virtual Machine) 即可。由 JVM 来负责 Java 程序在该系统中的运行。

两种核心机制:

  • Java 虚拟机
  • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
  • 对于不同的平台,有不同的虚拟机
  • 只有某平台提供了对应的java虚拟机, java程序才可在此平台运行
  • Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”

  • Java 虚拟机所处的位置

  • 垃圾回收机制
  • 对不再使用的内存空间进行回收—— 垃圾回收,在C/C++ 等语言中,由程序员负责回收无用内存,java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程 跟踪存储空间的分配方案,并在JVM空闲时,检查并释放那些可被释放的存储空间。
  • 垃圾回收在 Java 程序运行过程中自动进行,程序员无法精确控制和干预
  • Action:Java程序还会出现内存泄漏和内存溢出问题吗? 是的
1.3、环境搭建

1、什么是JDK, JRE

  • JDK(Java Development Kit Java开发工具包)JDK 是提供给 Java 开发人员使用的,其中包含了java的开发工具,也包括了 JRE。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
  • JRE(Java Runtime Environment Java运行环境) 包括Java虚拟机和 Java 程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
  • 总结:使用JDK的开发工具完成的java程序,然后交给JRE去运行
  • JDK = JRE + 开发工具集(例如Javac编译工具等)
  • JRE = JVM + Java SE标准类库
    2、配置环境变量 path
  • 可以参考网上资料

3、开发HelloWord程序

public class Test{
  // 程序执行的入口
  public static void main(String[] args) {
    System.out.println(“Hello World!”);
  }
}

1.4、基本语法

1、文档注释(Java 特有)

/**
* @author 指定java程序的作者
* @version 指定源文件的版本
*/

注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现该程序的说明文档

操作方式

javadoc -d mydoc -author -version HelloWorld.java

2、基本语法

  • Java 源文件以“java”为扩展名。源文件的基本组成部分是类(class)
  • Java 应用程序的执行入口是main()方法。它有固定的书写格式:
  • public static void main(String[] args) {…}
  • Java 语言严格区分大小写
  • Java 方法由一条条语句构成,每个语句以“;”结束。
  • 大括号都是成对出现的, 缺一不可。
  • 一个源文件中最多只能有一个 public 类。其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名

3、良好的编程风格

正确的注释和注释风格

  • 使用文档注释来注释整个类或整个方法。
  • 如果注释方法中的某一个步骤,使用单行或多行注释。

正确的缩进和空白

  • 使用一次tab操作,实现缩进
  • 运算符两边习惯性各加一个空格。比如: 2 + 4 * 5。

块的风格

  • Java API 源代码选择了行尾风格
public class Test {
  public static void main(String[] args){
    System.out.println("Block Style!");
  }
}

4、常用的Java开发工具

文本编辑工具

  • 记事本
  • UltraEdit
  • EditPlus
  • TextPad
  • NotePad
  • Sublime

Java 集成开发环境(IDE)

  • JBuilder
  • NetBeans
  • Eclipse
  • MyEclipse
  • IntelliJ IDEA(目前Java开发效率最快的IDE工具)

2、变量与运算符

2.1、关键字与保留字

关键字(keyword)的定义和特点:

定义: 被Java语言赋予了特殊含义,用做专门用途的字符串(单词)

特点: 关键字中所有字母都为小写

  • 用于定义数据类型的关键字

class interface enum byte short

int long float double char boolean void

  • 用于定义流程控制的关键字

if else switch case default

while do for break continue return

  • 用于定义访问权限修饰符的关键字

private protected public

  • 用于定义类,函数,变量修饰符的关键字

abstract final static synchronized

  • 用于定义类与类之间关系的关键字

extends implements

  • 用于定义建立实例及引用实例,判断实例的关键字

new this super instanceof

  • 用于异常处理的关键字

try catch finally throw throws

  • 用于包的关键字

package import

  • 其他修饰符关键字

native strictfp transient volatile assert

  • 用于定义数据类型值的字面值

true false null

保留字:现有Java版本尚未使用, 但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字。

goto 、 const

2.2、标识符(Identifier)

标识符定义:Java 对各种变量、 方法和类等要素命名时使用的字符序列称为标识符

  • 凡是自己可以起名字的地方都叫标识符
  • 由26个英文字母大小写,0~9,_或$组成,数字不可以开头,严格区分大小写,不能包含空格

名称命名规范

  • 包名:多单词组成时,所有字母都小写:xxxyyyzzz
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZxx
  • 变量名、方法名:多单词时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
  • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
  • 注意:标识符可以使用汉字声明,但是不建议使用
2.3、变量

变量的概念:

  • 内存中的一个存储区域
  • 该区域的数据可以在同一类型范围内不断变化
  • 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

变量的作用:用于在内存中保存数据

使用变量注意事项:

  • Java中每个变量必须先声明,后使用
  • 使用变量名来访问这块区域的数据
  • 变量的作用域:其定义所在的一对{ }内
  • 变量只有在其作用域内才有效
  • 同一个作用域内,不能定义重名的变量

声明和赋值变量

  • 语法: <数据类型> <变量名> = <初始化值>
  • 例如: int var = 10;

变量分类-按数据类型

  • 基本数据类型
  • 数值型 整数(byte,short,int,long) 浮点类型(float,double)
  • Java各整数类型有固定的表数范围和字段长度(bit 计算机中的最小存储单位 byte计算机中基本存储单元)
  • byte 1字节(8bit) -128~127
  • short 2字节 -2^15 ~ 2^15 -1
  • int 4字节 -2^31 ~2^31 -1
  • long 8字节 -2^63 ~2^63 -1
  • 浮点类型
  • float:单精度,尾数可以精确到7位有效数字 4字节
  • double:双精度,精度是float的两倍 8字节
  • 字符型 char
  • 字符常量是用单引号(‘ ’)括起来的单个字符
  • 还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量
  • UTF-8 是一种变长的编码方式,在互联网上使用最广的一种 Unicode 的实现方式
  • 布尔类型 boolean
  • 用来判断逻辑条件
  • if条件控制语句;
  • while循环控制语句;
  • do-while循环控制语句;
  • for循环控制语句;
  • boolean类型数据只允许取值true和false,无null。
  • java虚拟机没有任何供 boolean值专用的字节码指令,在编译之后都是用 int数据类型来代替:true用1表示,false用0表示 《java虚拟机规范 8版》
  • 自动类型转换:容量小的类型自动转换为容量大的数据类型
  • byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型
  • boolean类型不能与其它数据类型运算
  • 任何基本数据类型的值和字符串(String)进行连接运算时(+), 基本数据类型的值将自动转化为字符串(String)类型
  • 引用数据类型
  • 类 Class 包含字符串
  • String不是基本数据类型,属于引用数据类型
  • 强制类型转换 :将容量大的数据类型转换为容量小的数据类型。 使用时要加上强制转换符: (),可能造成精度降低或溢出
  • 字符串不能直接转换为基本类型,可以通过基本类型对应的包装类型来转换
  • 如: String a = “43”; int i = Integer.parseInt(a);
  • boolean类型不可以转换为其它的数据类型
  • 进制:所有数字在计算机底层都以二进制形式存在。(计算机组成原理课程
  • 计算机以二进制补码的形式保存所有的整数
  • 正数的原码、反码、补码都相同
  • 负数的补码是其反码+1
  • 目的:简化计算机的基础电路设计,让机器只有加法,没有减法
  • 接口 interface
  • 数组 [ ]

变量分类-按声明的位置不同来区划

  • 在方法体外,类体内声明的变量称为成员变量。
  • 实例变量(不加 static 修饰)
  • 类变量(以 static 修饰)
  • 方法体内部声明的变量称为局部变量
  • 形参(方法、构造器中定义的变量)
  • 方法局部变量(在方法内定义)
  • 代码块局部变量(在代码块内定义)

除了局部变量形参外,其他类型需显式初始化

2.4、运算符

定义:运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

算术运算符

  • 算术运算符的注意问题
  • 如果对负数取模,可以把模数负号忽略不记,如: 5%-2=1。 但被模数是负数则不可忽略
  • 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分
  • +”除字符串相加功能外,还能把非字符串转换成字符串
  • System.out.println(“5+5=”+5+5); //打印结果是? 5+5=55

赋值运算符

  • 符号: =
  • 当“=”两侧数据类型不一致时, 可以使用自动类型转换或使用强制类型转换原则进行处理。
  • 支持连续赋值

比较运算符(关系运算符)

逻辑运算符

  • &—逻辑与 | —逻辑或 ! —逻辑非
  • && —短路与 || —短路或 ^ —逻辑异或
  • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6

位运算符

  • 位运算是直接对整数的二进制进行的运算
  • 使用场景?
    三元运算符
  • (条件表达式)?表达式1:表达式2;为true, 运算后的结果是表达式1;
  • 表达式1和表达式2为同种类型
  • 运算符的优先级
2.5、程序流程控制

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块

三种基本流程结构

顺序结构

  • 程序从上到下逐行地执行,中间没有任何判断和跳转

分支结构

  • 根据条件,选择性地执行某段代码。条件表达式必须是布尔表达式、布尔变量
  • 有if…else和switch-case两种分支语句
  • 语句块只有一条执行语句时,一对{}可以省略,但建议保留
  • 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是“包含”关系时,“小上大下 / 子上父下
  • switch语句有关规则
  • switch(表达式)中表达式的值必须是下述几种类型之一: byte, short,char, int, 枚举 (jdk 5.0), String (jdk 7.0)
  • case子句中的值必须是常量
  • if 和 switch语句很像,具体什么场景下,应用哪个语句呢?
  • 如果判断的具体数值不多,而且符合byte、 short 、 char、 int、 String、枚举等几种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高
  • 对区间判断,对结果为boolean类型判断,使用if, if的使用范围更广。也就是说, 使用switch-case的,都可以改写为if-else

循环结构

  • 根据循环条件,重复性的执行某段代码。
  • 有while、 do…while、 for三种循环语句。
  • for循环
  • for (①初始化部分; ②循环条件部分; ④迭代部分){
    ③循环体部分;
  • 执行过程:①-②-③-④-②-③-④-②-③-④-…-②
  • ②循环条件部分为boolean类型表达式,当值为false时,退出循环
  • ④可以有多个变量更新,用逗号分隔
  • while循环
  • ①初始化部分
    while(②循环条件部分){
    ③循环体部分;
    ④迭代部分;
    }
  • 执行过程:①-②-③-④-②-③-④-②-③-④-…-②
  • for循环和while循环可以相互转换
  • do-while循环
  • 语法格式
    ①初始化部分;
    do{
    ③循环体部分
    ④迭代部分
    }while(②循环条件部分);
  • ①-③-④-②-③-④-②-③-④-…②
  • 特殊关键字的使用:break、 continue
  • break语句用于终止某个语句块的执行
  • break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
  • continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
  • return:并非专门用于结束循环的,它的功能是结束一个方法,不管这个return处于多少层循环之内
  • 注: JDK1.5提供了foreach循环,方便的遍历集合、数组元素

3、数组

定义:是多个相同类型数据按一定顺序排列的集合, 并使用一个名字命名, 并通过编号的方式对这些数据进行统一管理

3.1、概述

1、数组本身是引用数据类型,数组中的元素可以是任何数据类型;

2、创建数组对象会在内存中开辟一整块连续的空间,数组名中的引用时这块连续空间的首地址;

3、数组的长度一旦确定,就不能修改

一维数组的使用:声明

type var[] 或 type[] var;

  • 例如:int a[];int[] a1;double b[];String[] c; //引用类型变量数组
  • Java语言中声明数组时不能指定其长度
相关文章
|
2月前
|
Java Apache Maven
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
62 6
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
|
2月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
48 1
|
2月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
34 2
|
16天前
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
33 3
|
2月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
30 1
|
2月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
30 1
|
2月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
33 2
|
2月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
57 3
|
2月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
32 0
|
3月前
|
Java 数据安全/隐私保护
java之基本语法
java之基本语法
35 6