1.java基础语法

java虚拟机—JVM

JVM (Java Virtual Machine ) : Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java最具吸弓|力的特性之一。我们编写的Java代码,都运行在JVM之上。

跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。

Java的虚拟机本身不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机。

JRE和JDK

  • JRE (Java Runtime Enironment) :是java程序的运行时环境,包含JvM和运行时所需要的核心类库。
  • JDK (Java Development Kit):是Java程序开发工具包,含JRE和开发人员使用的工具。
    三者关系: JDK> JRE> JVM
    在这里插入图片描述
    JDK的目录结构
    • bin目录 - 该目录下主要存放JDK的各种工具命令。
    • conf目录 - 该目录下主要存放jdk的相关配置文件。
    • include目录 - 该目录下主要存放了一些平台的头文件。
    • jmods目录 - 该目录下主要存放了JDK的各种模块。
    • legal目录 - 该目录下主要存放了JDK各模块的授权文档。
    • lib目录 - 该目录下主要存放了JDK工具的一些补充jar包和源代码。

编译和运行

编译:是指将我们编写的java源文件翻译成JVM认识的class文件,在这个过程中,javac 编译器会检查我们所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
运行:是指将class文件交给JVM去运行,此时JVM就会去执行我们编写的程序了。
在这里插入图片描述

关键字keywords

关键字:是指在程序中,Java已经定义好的单词,具有特殊含义。如public、class、static、void等

标识符

标识符:是指在程序中,我们自己定义内容。比如类的名字、方法的名字和变量的名字等等,都是标识符。

命名规则:硬性要求

  • 标识符可以包含英文字母26个(分大小写)、0-9(数字) 、$ (美元符号)和_ (下划线)。
  • 标识符不能以数字开头。
  • 标识符不能是关键字。
    命名规范:软性建议
  • 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)
  • 方法名规范:首字母小写,后面每个单词首字母大写(小驼峰式)
  • 变量名规范:全部小写。

常量

常量:是指在Java程序中固定不变的数据。

在这里插入图片描述

变量和数据类型

变量:在程序中可以变化的量
变量赋值:定义的变量量,不赋值不能使用。
当需要在程序中记录单个数据内容时,则声明一个变量即可,而声明变量的本质就是在内存中申请一个存储单元,由于该存储单元中的数据内容可以发生改变,因此得名为"变量"

变量的声明方式

数据类型 变量名 = 初始值;
其中=初始值可以省略,但;不可以省略。
变量的注意事项
• Java是强类型语言,变量在使用前必须声明来指明其数据类型。
• 变量在使用之前必须初始化。
• 变量不能重复声明

Java的数据类型分为两大类:

  • 基本数据类型:
    包括:整数、浮点数、字符、布尔
  • 引用数据类型:
    包括:类、数组、接口

基本数据类型
在这里插入图片描述
注意事项:

  1. 字符串不是基本类型,而是引用类型。
  2. 浮点型可能只是一个近似值,并非精确的值。
  3. 数据范围与字节数不-一定相关,例如float数据范围比long更加广泛,但是float是4字节, long是8字节。
  4. 浮点数当中默认类型是double。如果一 定要使用float类型, 需要加上一个后缀F。如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。

数据类型转换

  • 自动转换:将取值范围小的类型自动提升为取值范围大的类型。范围小的类型向范围大的类型提升,byte、short、char运算时直接提升为int

  • 强制转换:将取值范围大的类型强制转换成取值范围小的类型。

// double类型数据强制转成int类型,直接去掉小数点。
int i = (int)1.5;

浮点转成整数,直接取消小数点,可能造成数据损失精度。
int强制转成short 砍掉2个字节,可能造成数据丢失。

运算符

算数运算符
在这里插入图片描述
b=++a:变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。
b=a++:变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2, b的结果是1。

赋值运算符
在这里插入图片描述
比较运算符
在这里插入图片描述
逻辑运算符
在这里插入图片描述
三元运算符
三元运算符计算方式:

  • 布尔类型表达式结果是true, 三元运算符整体结果为结果1,赋值给变量。
  • 布尔类型表达式结果是false, 三元运算符整体结果为结果2,赋值给变量。
public static void main(String[] args) {
      inti=(1==2?100:200);
      System.out.println(i);//200
      intj=(3<=4?500:600);
      System.out.println(j);//500
}

方法

方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。

方法重载

方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
参数列表:个数不同,数据类型不同,顺序不同。
重载方法调用: JVM通过方法的参数列表,调用不同的方法。

数组

**数组概念:**数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

//格式一:数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
int[] arr = new int[3];

//格式二:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
int[] arr = new int[]{1,2,3,4,5};
//格式三:数据类型[] 数组名 = {元素1,元素2,元素3...};
int[] arr = {1,2,3,4,5};

数组获取最大值元素

public static void main(String[] args) {     
    int[] arr = { 5, 15, 2000, 10000, 100, 4000 };//定义变量,保存数组中0索引的元素     
    int max = arr[0]; //遍历数组,取出每个元素     
    for (int i = 0; i < arr.length; i++) {       //遍历到的元素和变量max比较       //如果数组元素大于max       
        if (arr[i] > max) {         //max记录住大值        
         max = arr[i];      
          }    
        }     
     System.out.println("数组最大值是: " + max); }

数组反转

public static void main(String[] args) {     
int[] arr = { 1, 2, 3, 4, 5 };     /*       循环中定义变量min=0最小索引       max=arr.length‐1最大索引       min++,max‐      */     
for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) {       //利用第三方变量完成数组中的元素交换       
int temp = arr[min];       
arr[min] = arr[max];       
arr[max] = temp;   
  }     // 反转后,遍历数组     
for (int i = 0; i < arr.length; i++) {       
System.out.println(arr[i]);    
 } 
 }

内存概述

内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程 序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。
Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

java虚拟机内存划分

在这里插入图片描述

Jshell脚本工具

JShell脚本工具是JDK9的新特性,当我们编写的代码非常少的时候,而又不愿意编写类,main方法, 也不愿意去编译和运行,这个时候可以使用JShell工具。启动JShell工具,在DOS命令行直接输入JShell命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值