JAVA的第一篇文章(Java,干嘛啊,哎呦~)—— JAVA概述和一部分基础语法

简介: JAVA的第一篇文章(Java,干嘛啊,哎呦~)—— JAVA概述和一部分基础语法

第一章 Java概述

1.从项目到代码

项目 人体
子系统(仓储、物流、商品、认证……) 子系统(呼吸、免疫、消化、血液循环……)
模块(商品搜索、商品发布、商品展示……) 器官(胃、小肠、大肠、胰腺、肝脏、胆囊……)
包(组件类包、实体类包、工具类包……) 组织(结缔组织、肌肉组织、脂肪组织、……)
类(Servlet组件类、Service组件类、Dao组件类……) 细胞(肌肉细胞、脂肪细胞、血小板、白血球、红血球……
代码(变量、常量、方法、流程控制、异常处理、IO、反射、枚举、泛型……) 细胞组成部分(细胞壁、细胞质、细胞液……)

2.JavaSE体系

  • 第一部分:计算机编程语言核心结构:数据类型运算符流程控制数组、…
  • 第二部分:Java面向对象核心逻辑:类和对象封装继承多态抽象接口、…
  • 第三部分:JavaSE核心高级应用:集合I/O多线程网络编程反射机制、…
  • 第四部分:Java新特性:Lambda表达式函数式编程新Date/Time API接口的默认、静态和私有方法、…
  • 第五部分:MySQL/JDBC核心技术:SQL语句数据库连接池DBUtils事务管理批处理、…

3.计算机语言介绍(了解)

计算机语言是什么

所谓计算机编程语言,就是人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。

计算机语言发展

  • 第一代:机器语言
  • 第二代:汇编语言
  • 第三代:高级语言

4.Java语言概述(了解)

4.1 Java生态圈

  • Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
  • 作为一个平台,Java虚拟机扮演着举足轻重的作用。除了 Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala、 JRuby、Kotlin等都是Java平台的一部分,它们依赖于Java虚拟机,同时,Java平台也因为它们变得更加丰富多彩。
  • 作为一种文化,Java几乎成为了 “开源”的代名词。在Java程序中,有着数不清的开源软件和框架。如Tomcat、Struts, Hibernate, Spring等。就连JDK和JVM自身也有不少开源的实现,如OpenJDK、Apache Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。
  • 作为一个社区,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之众多也令人咋舌。可以说,Java社区已经俨然成为了一个良好而庞大的生态系统。其实这才是Java最大的优势和财富。

4.2 Java 是最好的语言吗?

不是,因为在每个领域都有更合适的编程语言。

  • C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C++ 是面向对象的 C 语言,一直在不断的改进。
  • JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。
  • Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。
  • Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。
  • Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。
  • Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。
  • 编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/Objective-C。
  • R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法
  • SQL 是用于访问和处理数据库的标准的计算机语言, 这类数据库包括:MySQL,Oracle, Sybase, SQL Server, DB2, Access 等等

一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。

4.3 Java语言发展历史

Java诞生于SUN(Stanford University Network),09年SUN被Oracle(甲骨文)收购。

Java之父是詹姆斯.高斯林(James Gosling)。

1996年发布JDK1.0版。

发行版本 发行时间 备注
Java 1995.05.23 Sun公司在Sun world会议上正式发布Java和HotJava浏览器
Java 1.0 1996.01.23 Sun公司发布了Java的第一个开发工具包
Java 1.1 1997.02.19
Java 1.2 1998.12.08 拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.3 2000.05.08
Java1.4 2004.02.06
Java 5.0 2004.09.30 ①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.0 2006.12.11 2009.04.20 Oracle宣布收购SUN公司
Java 7.0 2011.07.02
Java 8.0 2014.03.18
Java 9.0 2017.09.22 ①每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.0 2018.03.21
Java 11.0 2018.09.25 JDK安装包取消独立JRE安装包
Java 12.0 2019.03.19
Java 13.0 2019.9.18

4.4 Java技术体系平台

  • JavaSE(Java Platform, Standard Edition标准版):允许您在桌面和服务器上开发和部署Java应用程序。Java提供了丰富的用户界面、性能、多功能性、可移植性和当今应用程序所需的安全性。
  • JavaEE(Java Platform, Enterprise Edition企业版):是为开发企业环境下的应用程序提供的一套解决方案,主要针对于Web应用程序开发。
  • JavaME(Java Platform, Micro Edition 小型版):为互联网上的嵌入式和移动设备上运行的应用提供了一个健壮、灵活的环境:微控制器、传感器、网关、移动电话、个人数字助理(PDA)、电视机顶盒、打印机等等。JavaME包括灵活的用户界面、健壮的安全性、内置的网络协议,以及支持动态下载的网络和离线应用程序。基于JavaME的应用程序在许多设备上都是可移植的,但是利用了每个设备的本机功能。
  • Java Embedded: 用于解锁物联网的智能设备的价值: 通过远程市场更新和刷新功能延长产品生命周期和价值; 利用Java的可伸缩性、健壮性、可移植性和全套功能,提高生产效率,降低成本,缩短上市时间; 在边缘启用快速数据功能;
  • Java Card:使安全元件(如智能卡和其他防篡改安全芯片)能够承载采用Java技术的应用程序。Java card提供了一个安全的、可互操作的执行平台,它可以在一个资源受限的设备上存储和更新多个应用程序,同时保持最高的认证级别和与标准的兼容性。
  • Java TV:是一种基于JavaME的技术,它为开发在tv和机顶盒设备上运行的java应用程序提供了一个性能良好、安全且易于实现的解决方案。使用Java TV运行时,开发人员可以轻松创建应用程序,例如电子节目指南(EPG)、视频点播(VOD)客户端、游戏和教育应用程序、用于访问Internet数据的应用程序(例如天气、新闻播报器、社交网络)以及大多数蓝光光盘标题上的用户界面和奖金内容。

5.Java语言跨平台原理

5.1 Java语言的特点

  • 完全面向对象:Java语言支持封装、继承、多态,面向对象编程,让程序更好达到高内聚,低耦合的标准。
  • 支持分布式:Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
  • 健壮型:Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
  • 安全:Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。
  • 跨平台性:Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。

5.2 Java语言的跨平台原理

  • 跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。
  • JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境之一,也是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在JVM 之上。

如图所示,Java的虚拟机本身是不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机。

  • JRE (Java Runtime Environment) :是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库
  • JDK (Java Development Kit):是Java程序开发工具包,包含JRE 和开发人员使用的工具。

我们想要运行一个已有的Java程序,那么只需安装JRE 即可。

我们想要开发一个全新的Java程序,那么必须安装JDK ,其内部包含JRE

6.写第一个代码HelloWorld遇到的问题

6.1 源文件名与类名一致问题?

(1)源文件名是否必须与类名一致?public呢?

答:如果这个类不是public,那么源文件名可以和类名不一致。

如果这个类是public,那么要求源文件名必须与类名一致。

我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。

(2)一个源文件中是否可以有多个类?public呢?

答:一个源文件中可以有多个类,编译后会生成多个.class字节码文件。但是一个源文件只能有一个public的类。

一个类就是一个.class字节文件,这也就是为什么用doc命令运行时,是java 类名(而不是java 类名.class),因为加不加.class都是运行当前类,而且这个类里面要有main方法,不然运行不了。

有:

运行Java程序

在DOS命令行中,进入Java源文件的目录,使用java 命令进行运行。

命令:

java 类名字

举例:

java HelloWorld

java HelloWord 不要写 不要写 不要写 .class;Java字节码文件的运行工具:java.exe

(3)main必须在public的类中吗?

答:不是。

但是后面写代码时,基本上main习惯上都在public类中

6.2 编码问题

编码过程:字符转换为二进制的数值

解码过程:将二进制数值转换为字符

乱码:编码和解码过程中使用的字符集不一致。

  • 解决方法一:

在Notepad++等编辑器中,修改源文件的字符编码

  • 解决方法二:

在使用javac命令式,可以指定源文件的字符编码  javac -encoding utf-8 Review01.java

第二章 Java基础知识

1.注释(comment)

注释的概念:在编写程序的过程中,对程序代码进行解释说明。

  • 代码本身和人类的自然语言相比,可读性肯定是要差一些,所以为了更快能够知道代码的含义、作用、需要注意地方,所有程序员都应该养成写注释的好习惯。
  • 由于注释的内容是给程序员看的,需要使用人类的自然语言,而自然语言又不符合编程语言的语法,所以必须通过特定的符号,标记出来这部分的内容是注释,而不是要执行的程序的代码。
  • 注释:就是对代码的解释和说明。其目的是让人们能够更加轻松地了解代码。为代码添加注释,是十分必须要的,它不影响程序的编译和运行。

有3种注释方式

①单行注释:单行注释以 //开头,以换行结束

②多行注释:多行注释以 /*开头,以*/结束;注意:多行注释不能嵌套。

③文档注释:文档注释以/**开头,以*/结束;Javadoc命令可以抽取每个类、方法中的文档注释,生成API手册。

/**
这里是一个文档注释,通常包括对类或方法的介绍,还有作者、日期等信息。
类名:HelloWorld
整个程序执行的入口:main函数
作者:彦祖
日期:3月24日
*/
public class HelloWorld{
    /*
    多行注释:注释内容可以分很多行编写
    注意:多行注释不能嵌套,嵌套会导致多行注释提前结束
    main函数是整个程序的入口
    main函数的声明格式是固定的
    每一个类中最多只能有一个main函数*/
    public static void main(String[] args){
        // 单行注释:在命令行窗口内打印一句话
        // 单行注释仅对当前行有效
        System.out.println("彦祖我爱你");
    }
}
class YanZu {
}

2.关键字(keyword)

关键字:是指在程序中,Java已经定义好的单词,具有特殊含义。

  • HelloWorld案例中,出现的关键字有 publicclassstaticvoid 等,这些单词已经被Java定义好
  • 关键字的特点:全部都是小写字母
  • 关键字比较多,不需要死记硬背,学到哪里记到哪里即可。

关键字一共50个,其中const和goto是保留字。

true,false,null看起来像关键字,但从技术角度,它们是特殊的布尔值和空值。

java的流程与做饭相比较

3.标识符(identifier)

简单的说,凡是程序员自己命名的部分都可以称为标识符。

即给类、变量、方法、包等命名的字符序列,称为标识符。

1、标识符的命名规则(必须遵守)

规则是硬性规定:一旦违反,程序就会在编译过程中报错

(1)Java的标识符只能使用26个英文字母大小写,0-9的数字,下划线_,美元符号$

(2)不能使用Java的关键字(包含保留字)和特殊值

(3)数字不能开头

(4)不能包含空格

(5)严格区分大小写

2、标识符的命名规范(遭受鄙视)

规范是柔性规定:违反规范,不会导致编译报错,但是如果不遵守基本的规范,有很大可能被公司开除。

(1)见名知意

(2)类名、接口名等:每个单词的首字母都大写,形式:XxxYyyZzz,

例如:HelloWorld,String,System等

(3)变量、方法名等:从第二个单词开始首字母大写,其余字母小写,形式:xxxYyyZzz,

例如:age,name,bookName,main

(4)包名等:每一个单词都小写,单词之间使用点.分割,形式:xxx.yyy.zzz,

例如:java.lang

(5)常量名等:每一个单词都大写,单词之间使用下划线_分割,形式:XXX_YYY_ZZZ,

例如:MAX_VALUE,PI

4.初识数据类型(data type)

Java的数据类型分为两大类:

  • 基本数据类型:包括 整数浮点数字符布尔
  • 引用数据类型:包括 数组接口
  • 常量整数值, 赋值给byte,只要在byte范围内即可。 赋值给short,只要在short范围即可。 赋值给int,只要在int范围即可。 赋值给long,在int范围内的,可以加也可以不用加L,会自动升级为long,如果数字超过int范围,必须加L。
  • 小数常量值,无论多少,不加F,就是double类型。

四类八种基本数据类型:

Java中默认的类型:整数类型是int、浮点数类型是double。

5.常量(constant)

  • 常量:在程序执行的过程中,其值不可以发生改变的量
  • 常量的分类:
  • 自定义常量:通过final关键字定义(后面在面向对象部分讲解)
  • 字面值常量:
字面值常量 举例
字符串常量 ”HelloWorld“
整数常量 12,-23
浮点常量 12.34
字符常量 ‘a’,'0',‘沙’
布尔常量 true,false
空常量 null
public class ConstantDemo {
    public static void main(String[] args) {
        //字符串常量
        System.out.println("HelloWorld");
        //整数常量
        System.out.println(12);
        System.out.println(-23);
        //小数常量
        System.out.println(12.34);
        //字符常量
        System.out.println('a');
        System.out.println('0');
        System.out.println('沙');
        //布尔常量
        System.out.println(true);
        System.out.println(false);
    }
}

注意事项:

①字符常量,单引号里面有且仅有一个字符

②空常量,不可以在输出语句中直接打印

6.变量(variable)

6.1 变量的概念

变量:在程序执行的过程中,其值可以发生改变的量

变量的作用:用来存储数据,代表内存的一块存储区域,这块内存中的值是可以改变的。

6.2 变量的三要素

1、数据类型

2、变量名

3、值

6.3 变量的使用应该注意什么?

1、先声明后使用

如果没有声明,会报“找不到符号”错误

2、在使用之前必须初始化

如果没有初始化,会报“未初始化”错误

3、变量有作用域

如果超过作用域,也会报“找不到符号”错误

4、在同一个作用域中不能重名

6.4 变量的声明和赋值、使用的语法格式?

1、变量的声明的语法格式:

1、变量的声明的语法格式:

//数据类型  变量名;
//例如:
int age;
String name;
double weight;
char gender;
boolean isMarry;

2、变量的赋值的语法格式:

变量名 = 值;
例如:
age = 18;
name = "柴林燕"; //字符串的值必须用""
weight = 44.4;
gender = '女';//单字符的值必须使用''
isMarry = true;

long类型:如果赋值的常量整数超过int范围,那么需要在数字后面加L。

float类型:如果赋值为常量小数,那么需要在小数后面加F,不然默认为double。

char类型:使用单引号''

String类型:使用双引号""

7.两种常见的输出语句

换行输出语句:输出内容,完毕后进行换行,格式如下:

System.out.println(输出内容);

直接输出语句:输出内容,完毕后不做任何处理,格式如下:

System.out.print(输出内容);
String name = "柴林燕";
int age = 18;
对比如下两组代码:
System.out.println(name);
System.out.println(age);
System.out.print(name);
System.out.print(age);
对比如下两组代码:
System.out.print("姓名:" + name +",");//""中的内容会原样显示
System.out.println("年龄:" + age);//""中的内容会原样显示
System.out.print("name = " + name + ",");
System.out.println("age = " + age);

注意事项:

①换行输出语句,括号内可以什么都不写,只做换行处理

②直接输出语句,括号内什么都不写的话,编译报错

如果()中有多项内容,那么必须使用 + 连接起来

如果某些内容想要原样输出,就用""引起来,而要输出变量中的内容,则不要把变量名用""引起来

在这里感谢尚硅谷的老师,这些知识整理于在尚硅谷的学习!!!

相关文章
|
1月前
|
Java Apache Maven
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
59 6
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
|
26天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
42 1
|
28天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
32 2
|
28天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
44 3
|
26天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第19天】本文介绍了Java编程中重要的数据结构——Map,通过问答形式讲解了Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的使用和性能优化技巧,适合初学者和进阶者学习。
44 4
|
26天前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
20 1
|
26天前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
20 1
|
28天前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
25 2
|
1月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
43 3
|
28天前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
29 0