我与java的第一次相识

简介: 我与java的第一次相识

@TOC

一、java语言概述

1.java是什么?

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程.
不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合

2.java语言的重要性

1. 语言广泛使用程度
下图数据来自于TIOBE编程语言社区2022年7月最新的排行榜,常年占据语言排行榜榜首,是
近些年最火的编程语言之一。
在这里插入图片描述
2.工作领域

1.Java技术可以做网站开发
Java在电子商务领域以及网站开发领域,开发人员可以运用许多不同的框架来创建web项目。比如淘宝、京东、58等电子商务平台;应用平台、管理系统,如钉钉,CRM系统,ATM取款系统,医药管理系统等;游戏平台,非常多的手游都是由java开发的,还有一系列网游的统计数据;一些电子智能产品,如电视、空调、冰箱、汽车配件等。

2.Java技术可以开发软件
Java的应用广泛,而且安全性也是比较高的,很多企业在应用开发版块采用的技术都是Java技术,比如OA、邮箱、股票、金融、考试、物流、医疗、矿山等信息方面的系统。许多常用的软件和开发工具都是运用Java来编写和开发的。比如Eclipse、IneteliJIdea和Netbans IDE。

3.Java可技术以做Android
大家对Android早已熟悉,Android是一种基于Linux的自由及开放源代码的操作系统,其源代码是Java,所以大家现在可以看到很多手机操作系统例如MIUI都是通过修改源代码实现的。Java做安卓不单单是指系统,还有APP对于更多的开发人员来说,他们更多的时间是花在开发APP上面。

4.Java技术可以开发游戏
相信很多朋友都是比较喜欢玩游戏的,现在我们所用安卓系统的智能机,那些手机游戏大部份都是用Java开发的,就连这安卓的系统也有Java语言的身影,当然除了手机游戏之外,还有我们在电脑上所玩的游戏,有些也是Java所编写开发出来的,所以如果大家想要从事游戏开发行业的话可以选择学习Java技术作为切入点。

5.Java技术可以做嵌入式领域
Java 在嵌入式领域发展空间很大。在这个平台上,你只需130KB就能够使用 Java 技术。Java 被设计用来在嵌入设备上工作。事实上,这只是其中的一个领域,这只是当初的“一次写入,随便畅游”的项目,现在看起来是这样了。

6、Java技术可以做交易系统
第三方交易系统,现已是金融服务产业的一个很大的部分,它们同样也是Java编写。例如受欢迎的交易平台Murex,它也是Java编写,并与许多的银行前台所连接,提供服务。

7、大数据技术
Hadoop以及其他大数据处理技术都是用Java或者其他,例如Apache的基于Java的HBase和Accumulo以及ElasticSearchas。但是Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮大,Java 依旧还有潜力去在这个市场占据一部分。

8、服务器程序
Java在金融服务业的应用非常广泛。很多第三方交易系统、银行、金融机构都选择用Java开发。Java较安全,大型跨国投资银行用Java来编写前台和后台的电子交易系统、结算和确认系统,数据处理项目以及其他项目。Java被用在服务器端开发,从一个服务器上一级接收数据,处理后发向另一个处理系统。

9、科学应用
Java在科学应用中是很好选择,包括自然语言处理。Java相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。
3.校招中的要求
在这里插入图片描述
在上述招聘信息中我们可以看到,校招中比较看重学生的基础:语言,数据结构/算法,操作系统,计算机网络,数据库等

3.java语言发展史

java之父,James Gosling(詹姆斯-高斯林)博士,1995年5月以java的名称正式发布,并提出"Write once,Run anywhere".

Java之父
在这里插入图片描述
在这里插入图片描述

3.java语言特性

1.简单性
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持goto语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
2.面向对象
Java是一个面向对象的语言。对程序员来说,这意味着要注意其中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。
3.分布性
Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。
网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。
4.编译和解释性
Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
5.稳健性
Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。
Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。
可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。
异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
6.安全性
Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包括类如何从网上装载。例如,装载的类是放在分开的名字空间而不是局部类,预防恶意的小应用程序用它自己的版本来代替标准Java类。
7.可移植性
Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。
8.高性能
Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。
9.多线程性
Java是多线程语言,它提供支持多线程的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。Java的lang包提供一个Thread类,它支持开始线索、运行线索、停止线索和检查线索状态的方法。
Java的线索支持也包括一组同步原语。这些原语是基于监督程序和条件变量风范,由C.A.R.Haore开发的广泛使用的同步化方案。用关键词synchronized,程序员可以说明某些方法在一个类中不能并发地运行。这些方法在监督程序控制之下,确保变量维持在一个一致的状态。
10.动态性
Java语言设计成适应于变化的环境,它是一个动态的语言。例如,Java中的类是根据需要载入的,甚至有些是通过网络获取的。

4.java开发环境的安装

Windows下最简单的java环境配置指南

二、初始java HelloWorld

1.第一个程序

代码如下(示例):

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello World");
    }
}

在这里插入图片描述

一个java程序由以下三部分组成:
1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
2.类:类中带有一个或多个方法。方法必须在类的内部声明。
3.方法:在方法的花括号中编写方法应该执行的语句。
==总结一下:类存在于源文件里面;方法存在于类中;语句存在于方法中。==

注意:一个源文件中只能有一个public修饰的主类,并且类名和文件名保持一致

2.运行第一个java代码

java是一门半编译型,半解释性语言。先通过javac编译程序,生成.class是由字节码组成的和平台无关,面向JVM(java virtual machine),最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。

在这里插入图片描述
具体流程
1.编写java源文件
2.使用javac.exe编译器编译java源程序,生成xxx.class字节码文件.
3.使用java运行xxx.class字节码文件

图示如下(示例):
1.写好java源文件
在这里插入图片描述
2.编译源文件
在这里插入图片描述
3.生成字节码
在这里插入图片描述
4.JVM运行程序
在这里插入图片描述
在运行之前一定要安装好JDK(java development kit)java开发工具包.

3.经典面试题

JDK,JRE,JVM三者之间的关系?

1.JDK(java development kit):java开发工具包,提供给程序员使用,包含了JRE,同时还包含了编译器javac和自带的调试工具console等.
2.JRE(java runtime environment)java运行环境,包含了JVM,java基础类库,是编写程序运行时所需的环境
3.JVM:java虚拟机,运行java代码

在这里插入图片描述
编写和运行第一个Java程序,可能遇到的错误:
==1.源文件后缀不是.java==
==2.主类名与文件名不一致==
==3.main方法名写成mian==
==4.主类名没有加public修饰==
==5.方法中语句没有以分号结尾==
==6.中文格式的分号==
==7.JDK环境未配置成功==
==8.String[ ]中的s小写==
==9.输出语句中System的s小写==

目录
相关文章
|
6月前
|
Java
【Java探索之旅】我与Java的初相识(完):注释,标识符,关键字
【Java探索之旅】我与Java的初相识(完):注释,标识符,关键字
42 0
|
6月前
|
小程序 Java 程序员
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
72 0
|
6月前
|
分布式计算 Java 大数据
【Java探索之旅】我与Java的初相识(一):Java的特性与优点及其发展史
【Java探索之旅】我与Java的初相识(一):Java的特性与优点及其发展史
54 0
|
安全 Java 程序员
Java多线程学习笔记(二) 相识篇
Java多线程学习笔记(二) 相识篇
Java多线程学习笔记(二) 相识篇
|
8天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
17天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
4天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
23 9
|
7天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####
|
4天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
7天前
|
Java
JAVA多线程通信:为何wait()与notify()如此重要?
在Java多线程编程中,`wait()` 和 `notify()/notifyAll()` 方法是实现线程间通信的核心机制。它们通过基于锁的方式,使线程在条件不满足时进入休眠状态,并在条件满足时被唤醒,从而确保数据一致性和同步。相比其他通信方式,如忙等待,这些方法更高效灵活。 示例代码展示了如何在生产者-消费者模型中使用这些方法实现线程间的协调和同步。
21 3