从零开始的Java学习-Day1

从零开始的Java学习笔记-Day1

1. Java相关和环境搭建

1.1 Java的起源和发展

  • 1991 年 SUN 公司成立了一个由詹姆斯·高斯林(James Gosling)领导, 名为“Green”的项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。

  • 1992 年,小组开发了一种名为“Oak”的面向对象语言。但当时 OaK 语言因为缺乏硬件的支持而无法进入市场,从而被搁置一旁。

  • 1994 年,项目小组看到了浏览器在未来的发展前景,于是决定将 OaK 应用于万维网。

  • 1995 年,他们用 OaK 语言研发了一种能将小程序嵌入到网页中执行的技术——Applet,由于 Applet 不仅能嵌 入网页,还可随同网页在网络上进行传输,这让无数的程序员看到了 OaK 这门语言,与此同时,OaK 正式更名为 Java。

  • 1996 年 1 月,SUN 公司推出了 JDK1.0。JDK 包括两大部分:开发工具和运行环境。 运行环境包括核心 API、集成 API、用户界面 API、发布技术、Java 虚拟机(JVM)。JDK1.0 的发布, 标志着 Java 成为一种独立的开发工具。 JDK1.0 的代表性技术有:Java 虚拟机、Applet、AWT 等。

  • 1997 年 2 月,SUN 公司紧接着推出了 JDK 1.1。 4 月 2 日,首届 Java One 大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类 会议规模最高的纪录。JDK1.1 的代表性技术有:JDBC、JavaBeans、RMI、JAR 文件格式、Java 语法中的内部类和反射。

  • 1998 年 12 月 8 日,JDK1.2——第二代 Java 平台的企业版 J2EE 发布。

  • 1999 年 6 月,Sun 公司把 Java 体系分为三个方向: J2ME(Java2 Micro Edition,Java2 平台的微型版),应用于移动、无线及有限资源的环境; J2SE(Java 2 Standard Edition,Java 2 平台的标准版),应用于桌面环境; J2EE(Java 2Enterprise Edition,Java 2 平台的企业版),应用于基于 Java 的应用服务器。 随着供应商的不同,Java 的 API 也分为三大类: Java Core API:Java 核心类库; Java Optional API:对之前 API 的扩充; 特殊 API:由特殊厂商或组织提供的 API。 Java 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。 JKD1.2 的代表性技术有:Swing、Java IDL、EJB、Java Plug-in 等,在 API 文档中,添加了 strictfp 关键字和 Collections 集合类。

  • 1999 年 4 月 27 日,HotSpot 虚拟机发布。HotSpot 是由一家叫“Longview Technologies”的小公司开发的,后来被 SUN 公司收购。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成 为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机 。

  • 2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布,J2SE1.3 是对 J2SE1.2 的补充和扩展,从应 用领域的角度分析,JavaSE1.3 已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大 部分的信息技术领域。

  • 2002 年 2 月 26 日,J2SE1.4 发布。与 J2SE1.3 相比,多了近 62%的类和接口。在这些新特性当中, 还提供了广泛的 XML 支持、安全套接字(Socket)支持(通过 SSL 与 TLS 协议)、全新的 I/OAPI、 正则表达式、日志与断言。

  • 2004 年 9 月 30 日,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要 性,J2SE 1.5 更名为 Java SE 5.0(内部版本号 1.5.0)。Java SE 5.0 包含了从 1996 年发布 1.0 版 本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化 I/O 及可变参数。

  • 2005 年 6 月,在 Java One 大会上,Sun 公司发布了 Java SE 6。此时,Java 的各种版本已经更名, 已取消其中的数字 2,如 J2EE 更名为 JavaEE,J2SE 更名为 JavaSE,J2ME 更名为 JavaME。

  • 2011 年 7 月 28 日,收购 Sun 公司的 Oracle 发布了 Java SE 7,引入了二进制整数、支持字符串的 switch 语句、棱形语法、多异常捕抓、自动关闭资源的 try 语言等新特性。

  • 2014 年 3 月 18 日,Oracle 公司发布 Java SE8,这次版本升级为 Java 带来了全新的 Lambda 表达 式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大。

  • 2017 年 9 月 22 日,Oracle 公司发布 Java SE 9,这次版本升级强化了 Java 的模块化系统,让 Java 语言更轻量化,且采用了更高效、更智能的 GI 垃圾回收器,并在核心类库上进行大量更新,可进一 步简化编程。

  • 2018 年 3 月 21 日,Java SE 10 发布,Java 10 版本带来了很多新特性,其中最备受广大开发者 关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC 改进、性能提升、线程管控等新 特性。2018年 9 月 26 日,Java SE 11 发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS 版本持续支持到 2026 年 9 月)。Java11 带来了 ZGC、Http Client 等重要特性,一共包含 17 个 JEP (JDK Enhancement Proposals,JDK 增强提案)。

  • 2019 年 3 月 20 日,Java SE 12 发布。Java 12 是短期支持版本,可在下一个版本发布之前获得 Oracle 的商业支持。 2019 年 9 月 23 日,Java SE 13 发布,此版本中添加了“文本块”,文本块是一个多行字符串文字, 避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

1.2 Java的体系

  • Java SE-- 标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案。
  • Java EE-- 企业版:以企业为环境而开发应用程序的解决方案
  • Java ME–微型版:致力于消费产品 和嵌入式设备的最佳解决方案

1.3 Java的特性

  • 面向对象,跨平台,健壮,安全性

    跨平台原理:源代码—Java字节码—JVM(Java虚拟机,不同系统有不同的JVM)

  • Java 技术的两种核心机制 :

    垃圾回收器(GC)—回收无用内存—自动启用—消除了程序员回收无用内存空间的责任

    Java 虚拟机(JVM) —可运行Java字节码的虚拟计算机系统—一次编译,随处运行

1.4 JDK

  • JDK(Java Development Kits)–Java 开发工具集

    JRE(Java Runtime Environment)Java 运行时环境

    JVM

    Java API (应用程序编程接口)

    ​ Java 编译器(javac.exe)

    ​ Java 运行时解释器(java.exe)

    ​ Java 文档化化工具(javadoc.exe)及其它工具及资源

  • JRE 的三项主要功能:

    ​ 加载代码:由类加载器(class loader)完成

    ​ 校验代码:由字节码校验器(byte code verifier)完成

    ​ 执行代码:由运行时解释器(runtime interpreter)完成

1.5 JDK11 和 Eclipse 的安装和环境变量配置

  • 环境变量配置

    ​ JAVA_HOME(便于更改JDK的版本):

    ​ 高级系统设置->环境变量->新建 JAVA_HOME 变量( JDK 文件夹地址)->编辑 path ( %JAVA_HOME%\bin )

1.6 基本语法

  • 注释 :Java 程序有三种注释方式

    ​ 单行注释://注释

    ​ 多行注释:/注释/

    ​ 文档注释:/*注释/

  • Java 代码的位置

    ​ class 必须编写在.java 文件中

  • 语法规则:

    ​ Java 是严格区分大小写的

    ​ Java 是一种自由格式的语言

    ​ 代码分为结构定义语句和功能执行语句

    ​ 功能执行语句的最后必须用分号结束

2. Java基础语法

2.1 变量与基本数据类型

2.1.1 变量

变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单 元中的数据可以发生改变,因此得名为"变量"。

  • 变量分类:

    ​ 按所属的数据类型划分:

    ​ 基本数据类型变量

    ​ 引用数据类型变量

    ​ 按被声明的位置划分:

    ​ 局部变量:方法或语句块内部定义的变量

    ​ 成员变量:方法外部、类的内部定义的变量

2.1.2 数据类型

  • 8种基本数据类型
类型 占用内存 默认值
整数型(int) 4 字节 0
短整数型(short) 2 字节 0
长整数型(long) 8 字节 0
字节型(byte) 1 字节 0
浮点型(float) 4 字节 0.0f
双 精 度 型 (double) 8 字节 0.0d
布尔型(boolean) 1 字节 false
字符型(char) 2 字节 ‘\u0000 ’
  • 引用数据类型

    接口

    数组

2.1.3 标识符

Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。规则如下:

  • 由字母、数字、下划线(_)和美元符号($)组成。
  • 不能以数字开头。
  • 区分大小。
  • 长度无限制。
  • 不能是 Java 中的保留关键字。

2.1.4 数据类型转换

  • boolean 类型不能转换成任何其它数据类型。

  • 自动类型转换:容量小的类型自动转换成容量大的数据类型

    byte,short,int -> float ->long ->double

    int i = 10;
    long l = i;
    

    byte,short,int 不会互相转换,它们三者在计算时会转换成 int 类型

  • 强制类型转换:容量大的类型转换成容量小的数据类型时,要加上强制转换符

long l = 100L;
int i = (int)l;


有可能造成精度降低或数据溢出,使用时要小心。 

### 2.2 创建变量

- 创建变量:数据类型 变量名 (= 初始值)		

```java
int a = 20;
int b;
  • float类型变量定义:直接写出的浮点数字默认类型是double,需要在浮点数字后面加上f,来表示数字类型是float

    float f1 = 10.2f;
    
  • long类型变量定义:直接写出的整型数字默认类型是int,需要在整型数字后面加上l,来表示数字类型是long

    long l1 = 2220000000l;
    
  • char类型变量—单引号,1个字符,以数字进行存储(ascii码表)

    char c1 = ‘A’;
    

2.3 方法

方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符 方法名、参数列表和返回值。

2.3.1 格式

​ 权限修饰符 返回值声明 方法名称(参数列表){

​ 方法中封装的逻辑功能;

​ return 返回值;

​ }

public void say(int a, int b){
     
	System.out.println(“方法 say 正在执行”);
}

2.3.2 权限修饰符

访问修饰符 同一个类 同包 不同包,子类 不同包,非子类
private
默认
protected
public

2.3.3 返回值

  • 方法调用结束后可以返回一个数据,称之为返回值。
  • 方法在声明时必须指定返回值的类型。
  • 通过 return 语句返回,return 语句的作用在于结束方法且将数据返回。
  • 如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为 void。

2.3.4 参数列表

  • 方法的参数列表:在调用时传递给方法,需要被方法处理的数据。
  • 在方法定义时,需要声明该方法所需要的参数变量。
  • 在方法调用时,会将实际参数值传递给方法的参数变量。必须保证传递参数的类型和个数符合方法的声明。

2.4 运算符

  • 算术运算符

    运算符 描述 示例 结果
    + 1+2 3
    - 3-1 2
    * 6*2 12
    / 9/2 4
    % 取模 9%2 1
    ++ 自增
    自减

    ++和–:

    ​ 放在前面:先对变量加或减1,再进行其他操作

    ​ 放在后面:先进行其他操作,在对变量加或减1

  • 赋值运算符

    运算符 描述 示例 结果
    = 赋值 a = 1; a = 1
    += 加等于 a = 1;a += 2; a = 3
    -= 减等于
    *= 乘等于
    /= 除等于
    %= 模等于
  • 关系运算符

    运算符 描述 示例 结果
    == 相等 4 == 3 false
    != 不等 4 != 3 true
    < 小于
    > 大于
    <= 小于等于
    >= 大于等于
  • 逻辑运算符

    运算符 描述 示例 结果
    & false & true false
    | false | true true
    ^ 异或 false ^ true true
    ! ! true false
    && 短路与 false && true false
    || 短路或 false ||true true

    计算机中1为真,0为假

    短路与:若前面为false则直接返回false,不进行后面判断

    短路或:若前面为true则直接返回true,不进行后面判断

  • 字符串连接符

    当+的一侧为字符串类型数据是,+成为字符串连接符,用来连接两个字符串

/**
	 * 运算符使用练习
	 * @param args
	 */
	public static void main(String[] args) {
     
		// 算术运算符使用
		int a = 15;
		int b = 6;
		int c = a%b;
		System.out.println(c);
		System.out.println(c++);
		System.out.println(++c);
		// 赋值运算符使用
		a+=b;
		System.out.println(a);
		// 关系运算符使用
		System.out.println(a==b);
		System.out.println(a>b);
		// 逻辑运算符使用
		System.out.println(c>b & a>b);
		System.out.println(c>b | a>b);
		System.out.println(true^true);
		System.out.println(true^false);
		System.out.println(false^false);
		// 字符串连接符使用
		System.out.println(1+1+1+a+"1"+b);
	}

2.5 转义字符

  • 常见转义字符
转义字符 意义 ASCII码表(十进制)
\n 换行,从当前位置到下一行开头 010
\r 回车,从当前位置到本行开头 013
\t 水平制表,到下一个TAB位置 009
\\ 代表一个反斜线字符 092
\’ 代表一个单引号字符 039
\" 代表一个双引号字符 034
\v 垂直制表 011

2.6 变量的作用域

  • 全局范围的变量:成员变量
  • 局部变量的作用域:从大括号开始到大括号结束的范围,下一级的范围可以使用上一级中的变量,同级之间不能使用

2.7 接收用户输入

  • 接收特定数据类型:nextInt() , nextString() , ……

  • 接收各种数据类型:next() –接收文字, nextLine()—接收一行文字,两种方法不同时使用

    next()方法接收:接收一段文字,以回车或空格结束,必须输入有效字符

    nextLine()方法接收:接收一段文字,只能以回车结束,可以接收空格

		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数字");
		//接收用户输入
		int i = input.nextInt();
		System.out.println(i);
		//next()方法接收
		System.out.println("请输入next内容");
		String str1 = input.next();
		System.out.println(str1);
		//nextLine()方法接收
		System.out.println("请输入nextLine内容");
		String str2 = input.nextLine();
		System.out.println(str2);

你可能感兴趣的:(从零开始的Java,java)