Java 基础核心知识

1. Java必知

  • Java于 1996 年第一次发布。LTS(Long Term Support) 长期支持版本

  • Java类库源文件在 jdk 安装目录下的 src.zip 压缩文件中。

  • Java是 强类型 + 面向对象 语言,每个变量必须声明一种类型。

  • Java语言是跨平台的,但是 JVM 不是跨平台的。

  • Java语言不一定是最好的语言,但是Java虚拟机JVM一定是最好的虚拟机,因为JVM除了可以运行Java程序外还可以运行其它语言的程序。

  • Java一共有 8 种基本类型,包括 4 种整型,2 种浮点类型,1 种真值类型,1 种表示Unicode编码的字符类型。Java中的数据类型具有固定的大小,用于消除代码移植可能出现的问题,例如int在Java中永远是32位(4字节)整数。

数据类型名称存储要求
整型int4字节
短整型short2字节
长整型long8字节
字节型byte1字节
单精度浮点型float4字节
双精度浮点型double8字节
布尔型boolean
字符型char2字节
  • Java对Boolean值的要求极为严格,Boolean既不是整型也不是对象,两者之间不可进行相互的转换,所以不可用整型或对象的简写形式来代替。
        // 错误写法
        int flag = 1;
        if (flag) {
            System.out.println("不成立");
        }
        // 正确写法     
        boolean flag = true;
        if (flag) {
            System.out.println("成立");
        }

2. JVM 种类

JVM 主要有三种:

  1. Sun公司的 HotSpot(通常使用)

  2. BEA公司的 JRockit

  3. IBM公司的 J9VM

查看方式如图
请添加图片描述

3. JDK安装目录结构

  • JDK 1.8
|--- bin  指令、开发工具

​	|--- include  C或C++的头文件

​	|--- jre 运行时环境

​	|--- legal 法律声明

​	|--- lib 动态链接本地库,jar包(rt.jar 运行时环境)
  • JDK 1.9 之后
|--- bin  指令、开发工具

​	|--- conf  配置文件

​	|--- include  C或C++的头文件

​	|--- jmods  JMOD格式平台模块

​	|--- legal 法律声明

​	|--- lib 动态链接本地库,jar包(rt.jar 运行时环境)

模块化必须在JDK1.9及以上,需各模块建立module-info,并且在JDK1.9有了JShell这个REPL工具,不用再像原来那样 [ 建立文件 —> 编译 —> 执行 ],可直接在里面运行语句

4. Java特性

  1. 简单性
  2. 面向对象
  3. 分布式
  4. 健壮性
  5. 安全性
  6. 体系结构中立
  7. 可移植性
  8. 解释性
  9. 高性能
  10. 多线程
  11. 动态性

5. 常见疑点

  • 命令行参数,argsString类型数组,表示main方法接受的字符串数组,也就是使用命令行编译时所输入的参数值,不包括类名。
   public static void main(String[] args) {
   
        if (args.length == 0 || args[0].equals("-h")) {
            System.out.println("Hello,");
        } else if (args[0].equals("-g")) {
            System.out.println("GoodBye,");
        }
        for (String str : args) {
            System.out.println(str);
        }


编译时输入命令行参数

java Test -h tylt java
---> Hello, tylt java

此时args数组的状态

    args[0] = -h
    args[1] = tylt
    args[2] = java

所以在Java Web Spring 项目打成jar包运行时可以进行参数追加,因为最终也是通过main函数运行,本质还是传递到main函数中的args里面,例如变更端口号

java -jar xxx.jar --sever.port=9090

在IDEA中也可进行参数追加,例如使用临时属性测试
在这里插入图片描述

  • 算数表达式
   public static void main(String[] args) {
        int n1 = 0, n2 = 1, n3 = 0;
        n2++;// 此时n2=2
        System.out.println("first " + n2);
        ++n2;// 此时n2=3
        System.out.println("second " + n2);
        
        n1 = n2++;// 此时n2=4,由于后置n1的赋值是返回值n2+1之前的值,所以n1=3
        System.out.println("three " + n2);
        
        n3 = ++n2;// 此时n2=5,由于前置n1的赋值是返回值n2+1之后的值,所以n3=5
        System.out.println("four " + n2);
        
        System.out.println(n1 + "  " + "  " + n3);
    }
  • 字面量的含义
//10即为 int 类型的字面量
int a = 10; 

6. 输入输出

 Scanner scanner = new Scanner(System.in);

        System.out.println("请输入一个姓名");
        String str = scanner.nextLine();
        
        System.out.println("请输入年龄");
        int num = scanner.nextInt();

        System.out.println("姓名是:" + str +"     "+ "年龄是:" + num);

7. 空串与NULL串

  • 空串是长度为0的字符串,null表示没有任何对象与该变量相关联。
        String str = "张三";
        String strnull = null;
        
        if (str.length() == 0) {
            System.out.println("str为空");
        }
        if (str.equals("")) {
            System.out.println("str为空");
        }

        if (strnull == null) {
            System.out.println("strnull为NULL");
        }

8. 基础代码

  • 擅于使用三元运算符冒号表达式来替换 if:else。
	   // 普通写法
       String name = "张三";
        if (name.equals("张三")) {
            System.out.println(name + "此人存在");
        } else {
            System.out.println("此人不存在");
        }  
	   // 三元运算符写法
       String name = "张三";
       String result =
             name.equals("张三") ? name + "此人存在" : "此人不存在";  
             System.out.println(result);
  • 由较短的字符串构建成较长的字符串,例如每次按键或者读取文件中的单词,字符拼接的方式会耗时又浪费空间,效率比较低,所以可以用String Builder类(前身是StringBuffer)来解决。
        String str = "接下来的名字是";
        String strr = "张三";
        int num = 10;

        StringBuilder stringBuilder = new StringBuilder();
        
        stringBuilder.append(str);
        stringBuilder.append(strr);
        stringBuilder.append(num);

        String comstr = stringBuilder.toString();
        System.out.println(comstr+stringBuilder);
  • Java的foreach循环遍历,可遍历数组或者对象,遍历其中的每个元素,而不是下标值。
Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");

        String[] a = new String[10];

        for (int i = 0; i < 10; i++) {
            a[i] = scanner.nextLine();
        }
        for (int j = 0; j < a.length; j++) {
            System.out.print(a[j]);
        }
      
        //foreach循环遍历
        for (String elem : a) {
            System.out.print(elem);
        }

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天宇龙腾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值