文章目录

  • 1. Java必知
  • 2. JVM 种类
  • 3. JDK安装目录结构
  • 4. Java特性
  • 5. 常见疑点
  • 6. 输入输出
  • 7. 空串与NULL串
  • 8. 基础代码

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字节)整数。

数据类型 名称 存储要求
整型 int 4字节
短整型 short 2字节
长整型 long 8字节
字节型 byte 1字节
单精度浮点型 float 4字节
双精度浮点型 double 8字节
布尔型 boolean
字符型 char 2字节
  • 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] = -hargs[1] = tyltargs[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=2System.out.println("first " + n2);++n2;// 此时n2=3System.out.println("second " + n2);n1 = n2++;// 此时n2=4,由于后置n1的赋值是返回值n2+1之前的值,所以n1=3System.out.println("three " + n2);n3 = ++n2;// 此时n2=5,由于前置n1的赋值是返回值n2+1之后的值,所以n3=5System.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);}

Java 基础核心知识相关推荐

  1. Java七十四: Java基础/核心知识总结 — — “Java千字文”

    Java基础/核心知识总结 - - "Java千字文" Java基础/核心知识笔记终于完结,从Java语言诞生到jdk8新特性,共计74篇博文,43幅自制插图,35张表格,7万6千 ...

  2. 清华学长免费分享Java基础核心知识大总结(1)

    自学Java,如果觉得看<Java编程思想>或者<Core Java>等之类的"圣经"觉得内容太多,一下子吃不透的话,不妨看看这本<Java基础核心总 ...

  3. Java程序员晋升之路:“Java高级核心知识全面解析

    前言: 总结这份资料的目的是想记录一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java. 第一部分 扎实的Java基础 (Java基础+容器+并发+JV ...

  4. Java中高级核心知识全面解析——常用框架(SpringMVC-工作原理详解)

    一.先来看一下什么是 MVC 模式 MVC 是一种设计模式. MVC 的原理图如下: 二.SpringMVC 简单介绍 SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控 ...

  5. Day74~75_Flink(一)Flink基础核心知识

    第一讲 Flink基础核心知识 课程大纲 课程内容 学习效果 掌握目标 Flink概述 Flink概述 了解 Flink开发环境 Flink开发环境 掌握 Flink入门实战 Flink入门实战 掌握 ...

  6. java 数学公式解析框架有哪些_java程序员该如何进阶?这份java中高级核心知识全面解析请收好...

    <Java中高级核心知识全面解析>是整理收录GitHub50K+Star以上的高质量学习文档,前前后后花了近半个月的时间,终于整理而成.包含了Java基础.网络.Linux.数据结构与算法 ...

  7. Java中高级核心知识全面解析

    前言 今天给大家推荐一本PDF文档<Java中高级核心知识全面解析>这份文档总页数:524页.分为八个部分每个部分详细地讲解了核心知识点. 第一部分 扎实的Java基础 ( Java基础+ ...

  8. 呵呵,阿里高工熬夜手写“Java中高级核心知识全面解析”就这?也就让我五体投地的水平!

    前言 先说一下自己的个人情况,大专生,18年通过校招进入湖南金蝶软件公司,干了接近3年的CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了三 ...

  9. 太牛了!万文长字:Java基础+网络知识+Linux+数据结构与算法+数据库+系统设计+必会工具+面试指南,一文将Java面试讲解的清清楚楚!

    前言 今天给大家推荐一本PDF文档<Java中高级核心知识全面解析>这份文档总页数:524页.分为八个部分每个部分详细地讲解了核心知识点. 第一部分 扎实的Java基础 (Java基础+容 ...

最新文章

  1. 微信小程序插件新增能力
  2. c语言输出几个空格,新人提问:如何将输出时每行最后一个空格删除
  3. XML文件的生成与读取
  4. 制作基于http的yum源2
  5. ARGB和PARGB
  6. Python编程及应用师资研修班--昆明
  7. SQL_drop删除表、数据库
  8. python学习手册-Python 重点知识整理(基于Python学习手册第四版)
  9. logisim输出变成红色的e_新款E刚出就被骂最丑,却销量可观,梅赛德斯:都是小事儿,上AMG...
  10. mysql5.7.11解压安装_mysql 5.7.11解压安装教程
  11. Postgresql_最新版11.2源码编译安装
  12. 计算机操作系统第二章测试题及答案
  13. 史上最新最全的Android培训机构大揭秘
  14. java反编译数组_JavaGuide/JAD反编译tricks.md at master · Github-Programer/JavaGuide · GitHub...
  15. Python.PyAutoGUI.利用手机模拟器破解Yousee密码
  16. MATLAB 的 colormap 函数详解
  17. java word转换pdf(先自定义添加水印 后转换pdf)通过 aspose-words
  18. 东方博宜OJ——1007 - 【入门】统计大写英文字母的个数
  19. Coding 配置SSH凭据
  20. android博客集合

热门文章

  1. Android使用addr2line定位native崩溃堆栈
  2. python打包flask项目exe
  3. 单线激光雷达的外参标定方法
  4. 如何去理解同花顺l2接口?
  5. arm linux 中littlevgl支持tslib的方法
  6. 神经网络多分类的实现总结
  7. redis常用的五大数据类型和redis新增类型以及对应的命令
  8. Android单元测试的步骤
  9. 完全二叉树与满二叉树的区别(有图)
  10. 武汉伯钧成科技有限公司之行的郁闷感受