初识Java

简介

Java是一种通用的现代编程语言,最初由Sun微系统公司开发,目前归甲骨文公司所有。

该语言的关键特性是平台独立性:这意味着相同的Java程序可以在多个平台上运行而无需任何更改!此原则也称为“一次写入,随处运行”

多年来,Java一直是最流行的编程语言之一。

这种语言被世界各地的开发人员组成了一个巨大的社区!如果你有问题,你可以随时询问其他开发人员或在线找到合适的答案。

Java用于我们的Android智能手机,金融服务行业,电信,嵌入式系统以及许多其他领域。

医疗应用程序使用它来存储患者数据,计算机游戏。

没有它,像 IDEAEclipse 这样的开发工具就不会存在。


Java简史

Java语言项目由詹姆斯·高斯林和他的同事们于1991年发起。

起初,这种语言被称为“Oak”。后来,该项目被重命名为“Java”,作为对Java咖啡的引用。

出于这个原因,该语言的标志是一杯咖啡。

Java标识

Sun 微系统公司于 1996 年发布了 Java 1.0。之后,新版本每1到3年发布一次。自2017年发布Java 9以来,新版本每6个月发布一次。

可以阅读有关其历史记录的更多信息,并在此处找到最新版本。


Java语言的特点

  1. 简单易学
  2. 面向对象(封装,继承,多态)
  3. 分布性
  4. 编译和解释性
  5. 稳健性
  6. 稳健性
  7. 可移植性
  8. 高性能
  9. 支持多线程
  10. 动态性

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 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开发环境

  1. JVM

    Java 虚拟机(JVM)是运⾏ Java 字节码的虚拟机,JVM 有针对不同系统的特定实现 (Windows,Linux,macOS),⽬的是使⽤相同的字节码,它们都会给出相同的结果。

  2. JRE

    Java 运⾏时环境,它是运⾏已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机 (JVM),Java 类库,java 命令和其他的⼀些基础构件。

  3. JDK

    JAVA编译器,它拥有 JRE 所拥有的⼀切,还有编 译器(javac)和⼯具(如 javadoc 和 jdb),可以创建和编译程序,JDK是整个Java的核心。


Java跨平台

跨平台:java程序编译为字节码文件.class文件之后,拷到哪个平台的机器上面都能够无差别的运行,这依赖于 java虚拟机

java程序不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的。

image-20220810191955534

Java虚拟机

程序运行时,首先会启动 JDK 编译成 字节码文件(.class), 在由 java虚拟机(JVM) 进行解释,执行 字节码文件

java虚拟机(JVM) 是用各个平台的语言编写的,它能把java字节码文件翻译为相应平台的语言。

利用 java虚拟机(JVM) 可以把Java字节码程序和具体的硬件平台,操作系统环境分割开来。(一次编译,到处运行

只要安装针对特定平台的 java虚拟机(JVM) ,Java程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境。

img


基础

数据类型

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

img
  1. 整数型:byte,short,int,long
    • byte 占用1字节,也就是8位,默认值是0
    • short 占用2字节,也就是16位,默认值是0
    • int 占用4字节,也就是32位,默认值是0
    • long 占用8字节,也就是64位,默认值是0L
  2. 浮点型:float,double
    • float 是单精度,占用4位,默认值0.0f
    • double 是双精度,占用8位,默认值1是0.0d
  3. 字符型:char
    • char:单一的,占用16位Unicode字符,最小值是 \u0000(也就是0),最大值是 \uffff(即为65535),该;类型可以存储任何字符。
  4. 布尔型:boolean
    • 只有两种值,true或者是false,占用1位,默认值是false

image-20220730224326186


语法

  • 大小写敏感:例如 Hellohello 是不同的,这其实就是 Java 的字符串表示方式
  • 类名:对于所有的类来说,首字母应该大写,例如 MyFirstClass
  • 包名:应该尽量保证小写,后面每个单词字母都需要大写,例如 my.first.package
  • 方法名:方法名首字母需要小写,后面每个单词都需要大写,例如 myFirstMethod()

运算符

运算符是什么?是一些特殊的符号,主要用于数学函数,一些类型的赋值语句和逻辑比较方面。

赋值运算符

​ 使用操作符 = 来表示,它的意思是把 = 号右边的值复制给左边,右边的值可以是任何数,变量或者表达式,但左边的值必须是明确的,已经定义的变量。例如 int a = 5

​ 但是对于对象来说,复制的不是对象的值,而是对象的引用,所以如果说将一个对象复制给另一个对象,实际上是将 一个对象的引用赋值给另一个对象


算术运算符

和数学中的数值计算差不多,主要有

image-20220801155319164

算数运算符需要注意的就是优先级问题,当一个表达式中存在多个操作符时,操作符的优先级顺序就决定了计算顺序,最简单的规则就是 先乘除后加减()的优先级最高,没必要记住所有的优先级顺序,不确定的直接使用()即可。


自增,自减运算符

在对一个变量做加 1 或减 1 处理时,可以使用自增运算符 ++ 或自减运算 --

int a = 5;
b = ++a;
c = a++

注意

  1. 自增/自减只能作用于变量。

  2. ++/--在前和后的区别:在前先加后用,在后先用后加。

  3. 无论是前缀形式还是后缀形式,自增自减运算符的优先级要高于赋值运算符。

  4. 当一条语句中仅有++或--操作时,前缀形式与后缀形式的运算符没有任何区别。

    int a=1;
    int b =1;
    a++;
    ++b;
    System.out.println("a="+a+",b="+b); //输出a=2,b=2
    

比较运算符

比较运算符用于程序中的变量之间,变量和自变量之间以及其他类型的信息之间的比较。

结果是boolean型。比较运算符共有6个,通常作为判断的依据用于条件语句中。

image-20220802100740356

逻辑运算符

逻辑运算符主要有三种:与,或,非

image-20220801154247295

按位运算符

  1. &(与):参与运算的两个数据,按二进制位进行 “与” 运算。两位同时为1,结果才为1,否则结果为0。

    0&0=0  0&1=0  1&0=0  1&1=1
    
  2. |(或):参加运算的两个对象,按二进制位进行"或"运算。两个对象只要有一个为1,其值为1。

    0|0=0  0|1=1  1|0=1  1|1=1
    

    注意:&,| 的负数按补码形式参加按位与运算。

  3. ^(异或):参加运算的两个数据,按二进制位进行"异或"运算。如果两个相应位相同为0,相异为1。

    0^0=0  0^1=1  1^0=1  1^1=0
    
  4. ~(取反):参加运算的一个数据,按二进制进行"取反"运算。对一个二进制数按位取反,即将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

>>>无符号右移

它和 >>带符号右移 的功能是将参与运算的对象对应的二进制数右移指定的位数。它们的功能是将参与运算的对象对应的二进制数右移指定的位数。

注意

  1. 由于double,float在二进制中的表现比较特殊,因此不能来进行移位操作,报错,编译不过。
  2. int类型移位大于等于32位时,long类型大于等于64位时,会先做求余处理再位移处理,byte,short移位前会先转换为int类型(32位)再进行移位。

三元运算符

类似 if...else... 这种操作符,语法为: 条件表达式?表达式1:表达式2

问好前面的位置是判断的条件,判断结果为布尔型,为true时调用表达式1,为false时调用表达式2。

posted @ 2022-08-11 21:26  克峰同学  阅读(51)  评论(0编辑  收藏  举报