万字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);
  }
}



相关文章
|
3月前
|
监控 Java API
现代 Java IO 高性能实践从原理到落地的高效实现路径与实战指南
本文深入解析现代Java高性能IO实践,涵盖异步非阻塞IO、操作系统优化、大文件处理、响应式网络编程与数据库访问,结合Netty、Reactor等技术落地高并发应用,助力构建高效可扩展的IO系统。
109 0
|
4月前
|
存储 缓存 Java
我们来详细讲一讲 Java NIO 底层原理
我是小假 期待与你的下一次相遇 ~
163 2
|
5月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
173 0
|
4月前
|
存储 算法 安全
Java中的对称加密算法的原理与实现
本文详细解析了Java中三种常用对称加密算法(AES、DES、3DES)的实现原理及应用。对称加密使用相同密钥进行加解密,适合数据安全传输与存储。AES作为现代标准,支持128/192/256位密钥,安全性高;DES采用56位密钥,现已不够安全;3DES通过三重加密增强安全性,但性能较低。文章提供了各算法的具体Java代码示例,便于快速上手实现加密解密操作,帮助用户根据需求选择合适的加密方案保护数据安全。
367 58
|
3月前
|
人工智能 安全 Java
Go与Java泛型原理简介
本文介绍了Go与Java泛型的实现原理。Go通过单态化为不同类型生成函数副本,提升运行效率;而Java则采用类型擦除,将泛型转为Object类型处理,保持兼容性但牺牲部分类型安全。两种机制各有优劣,适用于不同场景。
105 24
|
4月前
|
XML JSON Java
Java 反射:从原理到实战的全面解析与应用指南
本文深度解析Java反射机制,从原理到实战应用全覆盖。首先讲解反射的概念与核心原理,包括类加载过程和`Class`对象的作用;接着详细分析反射的核心API用法,如`Class`、`Constructor`、`Method`和`Field`的操作方法;最后通过动态代理和注解驱动配置解析等实战场景,帮助读者掌握反射技术的实际应用。内容翔实,适合希望深入理解Java反射机制的开发者。
365 13
|
3月前
|
存储 缓存 安全
深入讲解 Java 并发编程核心原理与应用案例
本教程全面讲解Java并发编程,涵盖并发基础、线程安全、同步机制、并发工具类、线程池及实际应用案例,助你掌握多线程开发核心技术,提升程序性能与响应能力。
150 0
|
4月前
|
算法 Java 索引
说一说 Java 并发队列原理剖析
我是小假 期待与你的下一次相遇 ~
|
4月前
|
安全 Java 编译器
JD-GUI,java反编译工具及原理: JavaDecompiler一个Java反编译器
Java Decompiler (JD-GUI) 是一款由 Pavel Kouznetsov 开发的图形化 Java 反编译工具,支持 Windows、Linux 和 Mac Os。它能将 `.class` 文件反编译为 Java 源代码,支持多文件标签浏览、高亮显示,并兼容 Java 5 及以上版本。JD-GUI 支持对整个 Jar 文件进行反编译,可跳转源码,适用于多种 JDK 和编译器。其原理基于将字节码转换为抽象语法树 (AST),再通过反编译生成代码。尽管程序可能带来安全风险,但可通过代码混淆降低可读性。最新版修复了多项识别错误并优化了内存管理。
2169 1

热门文章

最新文章