万字Java基础原理知识大总结(上)

简介: Java诞生于1995年,原属于SUN公司,2009年4月20日,美国数据软件巨头甲骨文公司(Oracle)宣布以74亿美元收购SUN公司。Java是最受欢迎的开发语言,已经火了20年,并将继续引领着IT的编程语言。Java的LOGO是一杯热气腾腾的咖啡,真的是令人回味无穷。

1.JPG


一、Java


Java诞生于1995年,原属于SUN公司,2009年4月20日,美国数据软件巨头甲骨文公司(Oracle)宣布以74亿美元收购SUN公司。Java是最受欢迎的开发语言,已经火了20年,并将继续引领着IT的编程语言。Java的LOGO是一杯热气腾腾的咖啡,真的是令人回味无穷


1.1 为什么Java是平台无关性(可以跨平台)


传统语言


1.JPG


Java语言


3.JPG


我们可以对Java程序进行编译操作,编译后生成一种和平台系统无关的文件——字节码文件(.class)。但是此时Windows、Linux均不能执行字节码文件,只有Java虚拟机(JVM)可以识别字节码文件,那么为了在Windows系统上运行该Java程序,我们就只能在Windows平台上安装Windows版本的JVM,如果要在Mac系统上运行,那么得安装Mac版本的JVM,总结来说就两点:


  1. Java编译后生成和平台无关的.class文件
  2. jvm是平台相关的


在这里进行编译操作的工具叫做javac,启动JVM并把字节码加载进JVM的工具叫做java


4.JPG


二、Java环境


5.JPG


2.1、JRE


JRE(Java Runtime Environment):Java运行环境,如果要运行Java程序,就需要JRE的支持,JRE里包含JVM,一般在只运行程序而不开发程序的服务器中安装


2.2、JDK


JDK(Java Development Kit):Java开发工具,包含开发Java程序的所有工具如javac和java等,JDK包含JRE,如果已经安装了JDK就不必安装JRE


2.3、JVM


JVM(Java Virtual Machine):Java虚拟机,它是运行所有Java程序的虚拟计算机。JVM是不跨平台的,在Windows下装Windows版的JVM,在Linux下装Linux版的JVM


三、Java编译和运行的机制


6.JPG


  1. 编写源文件(Java文件)
  2. 使用Java c工具对源文件进行编译操作(java c 源文件.java),生成.class文件
  3. 生成字节码文件(.class文件)之后,使用Java工具启动JVM,运行程序(java 主方法的类名)


四、Java基础


4.1、语法规则


  1. Java语言严格区分大小写,大写和小写是不同的概念
  2. 一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义为public类,但如果源文件中包含了public类,源文件必须和public类同名
  3. 一个源文件中包含了N个Java类时,成功编译后会生成N份字节码文件,每一个类都会生成单独的.class文件,且字节码的文件名和其对应的类名相同
  4. 若一个类想要运行,则必须拥有主方法(main),因为main方法是程序的入口


4.2、注释


Java提供3种注释类型:


  1. 单行注释
//这是单行注释
//快捷键:Ctrl+/
复制代码


  1. 多行注释
/*
我是多行注释
快捷键为:打/* 再按回车
*/
复制代码


  1. 文档注释
/*
      * 
      * 我是文档类型
      * 快捷键为:打/*然后按几下tab键
      */
复制代码


多行注释之间彼此都不能交叉嵌套,因为/会找举例自己最近的/符号,组成一个注释语句块,上图中单独的*/符号就不能被编译器识别了


4.3、关键字和保留字


关键字

关键字:在编程语言中事先定义的,有着特殊含义和用途的单词

保留字

保留字:和关键字一样是编程语言事先定义好的,只是说现在暂时没有特殊的功能,但说不定以后某天会突然被赋予功能,因此被保留下来的单词。比如goto和const就是保留字


4.4、分隔符和标识符


4.4.1、分隔符


  1. 分号(;):语句的分割,表示一句话结束,好比咱们使用的句号。
  2. 花括号({}):表示一个代码块,是一个整体,花括号要成对使用。
  3. 方括号([]):定义数组和访问数组元素时使用。
  4. 圆括号(()):使用很广泛,具体用到细讲。
  5. 圆点(.):类和对象访问它的成员时使用。
  6. 空格( ):把一整条语句分割成几段,空格的次数不限制,好比一句英文里单词都要分开写一样。


4.4.2、标识符


在写代码的时候为了增强代码的阅读性,我们会自定义很多名字如:类名、方法名、变量名等。在编程的里,我们把这种为了增强程序阅读性而自定义的名称,称为标识符

标识符的命名规则:


  1. 由字母、数字、下划线、$组成,但不能以数字开头(注:此处的字母可以是中文、日文等)
  2. 大小写敏感
  3. 不能使用Java中的关键字和保留字
  4. 不能用Java中内置的类名


4.5、数据类型


7.JPG


注意:Java只有8大数据类型,String不属于基本数据类型,他属于引用数据类型


常用的整数类型是int和long,byte和short基本不用,常用的小数类型是double,float基本不用。因为double是不精确的,在实际开发中表示精确的小数我们使用BigDecimal类


8.JPG


  1. 整数类型默认是int类型,小数类型默认是double类型
  2. 表示long类型常量,要加L或者l,建议加L
  3. 表示float类型常量,要加F或者f,建议加F


五、变量


变量是内存中一块区域,可以往该区域存储数据,修改里面的数据,也可以获取里面的数据,一个变量如果没有被初始化,就意味着没有分配内存空间来存储,就不能使用

定义变量的语法格式如下:


  • String,表示类型,这里可以写任何的类型
  • name:变量名,和我们的姓名一样理解, 没有为什么
  • =:赋值运算符,后面会讲,意思是将右边的值赋值给左边的变量
  • “xiaolin”:一个字符串类型的值,如果是其他类型,不要加引号


9.JPG


10.JPG


变量的几个特点:

  1. 占据着内存中某一块存储区域
  2. 该区域有自己的变量名和数据类型
  3. 可以被重复使用
  4. 该区域的变量值可以在同一个类型的范围内不断地变化


5.1、变量的定义以及赋值


public class VarDemo{
  public static void main(String[] args) {
        // 方式一,先定义变量,再赋值
    // 数据类型  变量名;如:int  age;
    // 变量名 = 常量值;
    // 定义一个int类型变量,初始值为17
    int name;
    //修改age变量的值为17
    age = xiaolin;
    System.out.println(age);
        // 方式二,在声明时同时赋值(推荐)
    // 数据类型 变量名 = 初始化值; 
        // 定义一个String类型的变量,初始值为zs
        String name = "zs";
  }
}
复制代码


变量的使用注意如下几点:

  1. 变量必须是先声明再使用,并且初始化后才可以使用(定义包装类除外)
  2. 定义变量必须有数据类型
  3. 变量从开始定义到所在的作用域内可以使用,出了作用域之外就不可以使用了,且在同一作用域内,变量名不可以重复


常见的几种变量类型的定义:

public class VarDemo{
  public static void main(String[] args) {
    //byte类型变量
    byte b = 20;
    System.out.println(b);
    //short类型变量
    short s = 20;
    System.out.println(s);
    //int类型变量
    int i = 20;
    System.out.println(i);
    //long类型变量,使用L后缀
    long l = 20L;
    System.out.println(l);
    //float类型变量,使用F后缀
    float f = 3.14F;
    System.out.println(f);
    //double类型变量
    double d = 3.14;
    System.out.println(d);
    //char类型变量
    char c = 'A';
    System.out.println(c);
    //boolean类型变量
    boolean bb = true;
    System.out.println(bb);
    //String类型变量
    String str = "你好";
    System.out.println(str);
  }
}
复制代码


5.2、交换两个变量值


思路

  1. 把num1的值存储到临时变量temp中去
  2. 把num2的值赋给num1变量
  3. 把temp存储的值赋给num2变量


11.JPG


实现代码

public class ChangVarDemo{
  public static void main(String[] args) {
    int num1 = 10;
    int num2 = 20;
    System.out.println("num1=" + num1);
    System.out.println("num2=" + num2);
    //--------------------------------    
    //交互操作
    int temp = num1;
    num1 = num2;
    num2 = temp;
    //--------------------------------    
    System.out.println("num1=" + num1);
    System.out.println("num2=" + num2);
  }
}



相关文章
|
23天前
|
存储 Java 关系型数据库
高效连接之道:Java连接池原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。频繁创建和关闭连接会消耗大量资源,导致性能瓶颈。为此,Java连接池技术通过复用连接,实现高效、稳定的数据库连接管理。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接池的基本操作、配置和使用方法,以及在电商应用中的具体应用示例。
44 5
|
1月前
|
存储 算法 Java
Java HashSet:底层工作原理与实现机制
本文介绍了Java中HashSet的工作原理,包括其基于HashMap实现的底层机制。通过示例代码展示了HashSet如何添加元素,并解析了add方法的具体过程,包括计算hash值、处理碰撞及扩容机制。
|
13天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
13天前
|
Java
Java之CountDownLatch原理浅析
本文介绍了Java并发工具类`CountDownLatch`的使用方法、原理及其与`Thread.join()`的区别。`CountDownLatch`通过构造函数接收一个整数参数作为计数器,调用`countDown`方法减少计数,`await`方法会阻塞当前线程,直到计数为零。文章还详细解析了其内部机制,包括初始化、`countDown`和`await`方法的工作原理,并给出了一个游戏加载场景的示例代码。
Java之CountDownLatch原理浅析
|
15天前
|
Java 索引 容器
Java ArrayList扩容的原理
Java 的 `ArrayList` 是基于数组实现的动态集合。初始时,`ArrayList` 底层创建一个空数组 `elementData`,并设置 `size` 为 0。当首次添加元素时,会调用 `grow` 方法将数组扩容至默认容量 10。之后每次添加元素时,如果当前数组已满,则会再次调用 `grow` 方法进行扩容。扩容规则为:首次扩容至 10,后续扩容至原数组长度的 1.5 倍或根据实际需求扩容。例如,当需要一次性添加 100 个元素时,会直接扩容至 110 而不是 15。
Java ArrayList扩容的原理
|
2月前
|
算法 Java
JAVA并发编程系列(8)CountDownLatch核心原理
面试中的编程题目“模拟拼团”,我们通过使用CountDownLatch来实现多线程条件下的拼团逻辑。此外,深入解析了CountDownLatch的核心原理及其内部实现机制,特别是`await()`方法的具体工作流程。通过详细分析源码与内部结构,帮助读者更好地理解并发编程的关键概念。
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
21天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
40 2
|
24天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
21天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
34 1
下一篇
无影云桌面