初识Java
简介
Java是一种通用的现代编程语言,最初由Sun微系统公司开发,目前归甲骨文公司所有。
该语言的关键特性是平台独立性:这意味着相同的Java程序可以在多个平台上运行而无需任何更改!此原则也称为“一次写入,随处运行”。
多年来,Java一直是最流行的编程语言之一。
这种语言被世界各地的开发人员组成了一个巨大的社区!如果你有问题,你可以随时询问其他开发人员或在线找到合适的答案。
Java用于我们的Android智能手机,金融服务行业,电信,嵌入式系统以及许多其他领域。
医疗应用程序使用它来存储患者数据,计算机游戏。
没有它,像 IDEA
和 Eclipse
这样的开发工具就不会存在。
Java简史
Java语言项目由詹姆斯·高斯林和他的同事们于1991年发起。
起初,这种语言被称为“Oak”。后来,该项目被重命名为“Java”,作为对Java咖啡的引用。
出于这个原因,该语言的标志是一杯咖啡。
Sun 微系统公司于 1996 年发布了 Java 1.0。之后,新版本每1到3年发布一次。自2017年发布Java 9以来,新版本每6个月发布一次。
可以阅读有关其历史记录的更多信息,并在此处找到最新版本。
Java语言的特点
- 简单易学
- 面向对象(封装,继承,多态)
- 分布性
- 编译和解释性
- 稳健性
- 稳健性
- 可移植性
- 高性能
- 支持多线程
- 动态性
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java的三大版本
Java SE(Java Platform Standard Edition,Java 平台标准版)
-
它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。
-
Java SE 包含了支持 Java Web 服务开发的类,并为 Java EE 提供基础,如 Java 语言基础、JDBC 操作、I/O 操作、网络通信以及多线程等技术。
-
Java SE的体系结构图,如下
Java EE(Java Platform Enterprise Edition,Java 平台企业版)
- 企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。
Java EE
是在Java SE
基础上构建的,它提供Web
服务、组件模型、管理和通信API
,可以用来实现企业级的面向服务体系结构(Service Oriented Architecture,SOA)和 Web 2.0 应用程序。
Java ME(Java Platform Micro Edition,Java 平台微型版)
Java ME
为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
Java开发环境
-
JVM
Java 虚拟机(JVM)是运⾏ Java 字节码的虚拟机,JVM 有针对不同系统的特定实现 (Windows,Linux,macOS),⽬的是使⽤相同的字节码,它们都会给出相同的结果。
-
JRE
Java 运⾏时环境,它是运⾏已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机 (JVM),Java 类库,java 命令和其他的⼀些基础构件。
-
JDK
JAVA编译器,它拥有 JRE 所拥有的⼀切,还有编 译器(javac)和⼯具(如 javadoc 和 jdb),可以创建和编译程序,JDK是整个Java的核心。
Java跨平台
跨平台:java程序编译为字节码文件.class文件之后,拷到哪个平台的机器上面都能够无差别的运行,这依赖于 java虚拟机
。
java程序不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的。

Java虚拟机
程序运行时,首先会启动 JDK
编译成 字节码文件(.class)
, 在由 java虚拟机(JVM)
进行解释,执行 字节码文件
。
java虚拟机(JVM)
是用各个平台的语言编写的,它能把java字节码文件翻译为相应平台的语言。
利用 java虚拟机(JVM)
可以把Java字节码程序和具体的硬件平台,操作系统环境分割开来。(一次编译,到处运行)
只要安装针对特定平台的 java虚拟机(JVM)
,Java程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境。

基础
数据类型
在 Java
中,数据类型只有 四类八种

- 整数型:byte,short,int,long
- byte 占用1字节,也就是8位,默认值是0
- short 占用2字节,也就是16位,默认值是0
- int 占用4字节,也就是32位,默认值是0
- long 占用8字节,也就是64位,默认值是0L
- 浮点型:float,double
- float 是单精度,占用4位,默认值0.0f
- double 是双精度,占用8位,默认值1是0.0d
- 字符型:char
- char:单一的,占用16位Unicode字符,最小值是
\u0000(也就是0)
,最大值是\uffff(即为65535)
,该;类型可以存储任何字符。
- char:单一的,占用16位Unicode字符,最小值是
- 布尔型:boolean
- 只有两种值,true或者是false,占用1位,默认值是false
语法
- 大小写敏感:例如
Hello
与hello
是不同的,这其实就是Java
的字符串表示方式 - 类名:对于所有的类来说,首字母应该大写,例如
MyFirstClass
- 包名:应该尽量保证小写,后面每个单词字母都需要大写,例如
my.first.package
- 方法名:方法名首字母需要小写,后面每个单词都需要大写,例如
myFirstMethod()
运算符
运算符是什么?是一些特殊的符号,主要用于数学函数,一些类型的赋值语句和逻辑比较方面。
赋值运算符
使用操作符 =
来表示,它的意思是把 =
号右边的值复制给左边,右边的值可以是任何数,变量或者表达式,但左边的值必须是明确的,已经定义的变量。例如 int a = 5
。
但是对于对象来说,复制的不是对象的值,而是对象的引用,所以如果说将一个对象复制给另一个对象,实际上是将 一个对象的引用赋值给另一个对象
。
算术运算符
和数学中的数值计算差不多,主要有
算数运算符需要注意的就是优先级问题,当一个表达式中存在多个操作符时,操作符的优先级顺序就决定了计算顺序,最简单的规则就是 先乘除后加减
,()的优先级最高
,没必要记住所有的优先级顺序,不确定的直接使用()即可。
自增,自减运算符
在对一个变量做加 1 或减 1 处理时,可以使用自增运算符 ++
或自减运算 --
。
int a = 5;
b = ++a;
c = a++
注意:
-
自增/自减只能作用于变量。
-
++/--在前和后的区别:在前先加后用,在后先用后加。
-
无论是前缀形式还是后缀形式,自增自减运算符的优先级要高于赋值运算符。
-
当一条语句中仅有++或--操作时,前缀形式与后缀形式的运算符没有任何区别。
int a=1; int b =1; a++; ++b; System.out.println("a="+a+",b="+b); //输出a=2,b=2
比较运算符
比较运算符用于程序中的变量之间,变量和自变量之间以及其他类型的信息之间的比较。
结果是boolean型。比较运算符共有6个,通常作为判断的依据用于条件语句中。
逻辑运算符
逻辑运算符主要有三种:与,或,非
按位运算符
-
&(与):参与运算的两个数据,按二进制位进行 “与” 运算。两位同时为1,结果才为1,否则结果为0。
0&0=0 0&1=0 1&0=0 1&1=1
-
|(或):参加运算的两个对象,按二进制位进行"或"运算。两个对象只要有一个为1,其值为1。
0|0=0 0|1=1 1|0=1 1|1=1
注意:&,| 的负数按补码形式参加按位与运算。
-
^(异或):参加运算的两个数据,按二进制位进行"异或"运算。如果两个相应位相同为0,相异为1。
0^0=0 0^1=1 1^0=1 1^1=0
-
~(取反):参加运算的一个数据,按二进制进行"取反"运算。对一个二进制数按位取反,即将0变1,1变0。
~1=0 ~0=1
位移运算符
移位运算符在程序设计中,是位操作运算符的一种。
移位运算符可以在二进制的基础上对数字进行平移。
按照平移的方向和填充数字的规则分为三种: <<(左移)
、 >>(带符号右移)
和 >>>(无符号右移)
。
<<左移
//左位移后的值计算方法 : a * 2 的 b 次方
int a = 5; //a的二进制: 101
int b= 3; //位移位数
int c= a<<b; //c的二进制: 101000,发现二进制的右边多了三个0
>>带符号右移
//右位移后的值计算方法 : a / 2 的 b 次方,没有小数
int a = 50; //a的二进制:110010
int b= 2; //位移位数
int c= a>>b; //c的二进制:110,发现二进制的右边少了三个0
>>>无符号右移
它和 >>带符号右移
的功能是将参与运算的对象对应的二进制数右移指定的位数。它们的功能是将参与运算的对象对应的二进制数右移指定的位数。
注意
- 由于double,float在二进制中的表现比较特殊,因此不能来进行移位操作,报错,编译不过。
- int类型移位大于等于32位时,long类型大于等于64位时,会先做求余处理再位移处理,byte,short移位前会先转换为int类型(32位)再进行移位。
三元运算符
类似 if...else...
这种操作符,语法为: 条件表达式?表达式1:表达式2
。
问好前面的位置是判断的条件,判断结果为布尔型,为true时调用表达式1,为false时调用表达式2。
本文作者:克峰同学
本文链接:https://www.cnblogs.com/KeFeng/p/16544798.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步