java基础知识点整理一

引言

'''突然发觉任何一门语言的基础知识部分,都比较杂一些.如果个人经过梳理之后,知识体系系统化,可以让基础更加牢靠一些。但是还是会有一些遗忘。所以,我想把一些比较重要但是容易遗忘的知识,写成笔记,到时候直接Ctrl+F 查找time:2020年12月29日18:40:45 V1#2021年1月2日13:34:43  V2
'''# ★ 的数量代表重要程序

java的跨平台原理

平台:指的是操作系统。
例如主流平台:Windows、Mac OS、Linux等

跨平台:Java程序可以在任意操作系统上运行。 java源程序主要靠JVM来运行,这使得Java可以独立于平台,有着更好的可扩展性与跨平台性。

JDK、JRE、JVM ★★★

详细:JKD与JRE与JVM

示意图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dD9lDxX0-1616728708313)(http://img.ensio.cn/img/jdkjvmjre.jpg “图一”)]

  • JVM: (java virtual machine),java虚拟机 用来解释执行字节码文件(class文件)的。
  • JRE: (java runtime environment), java运行时环境,针对java用户
  • JDK: (java development kit), java开发工具包,用来开发Java程序的,针对java开发者。
  1. JVM

    JVM:Java Virtual Machine(Java 虚拟机)JVM是JRE的一部分,它是一个虚拟出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

    JVM是Java实现跨平台最核心的部分,所有的Java程序会首先被编译为.class的类文件,
    JVM的主要工作是解释自己的指令集(即字节码)并映射到本地的CPU的指令集或OS的系统调用。
    Java面对不同操作系统使用不同的虚拟机,依次实现了跨平台。
    JVM对上层的Java源文件是不关心的,它关心的只是由源文件生成的类文件。

  2. JRE

    JRE:Java Runtime Environment(Java运行环境)。在Java平台下,所有的Java程序都需要在JRE下才能运行。只有JVM还不能进行class的执行,因为解释class的时候,JVM需要调用解释所需要的类库lib。JRE里面有两个文件夹bin和lib,这里可以认为bin就是JVM,lib就是JVM所需要的类库,而JVM和lib合起来就称为JRE。

    JRE包括JVM和JAVA核心类库与支持文件。
    与JDK不同,它不包含开发工具—-编译器、调试器和其它工具。

  3. JDK

    JDK:Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java的运行环境(Java Runtime Environment)、一堆Java工具(javac、java、jdb等)和Java基础的类库(即Java API包括rt.jar)。

    Java API是Java的应用程序接口,里面有很多已经写好的Java Class,包括一些重要的语言结构以及基本图形,网络和文件I/O等等,我们可以直接调用使用。
    总结:

    有JVM就可以解释执行字节码文件(.class).JVM解释执行这些字节码文件的时候需要调用类库,如果没有这些类库JVM就不能正确的执行字节码文件,JVM+类库=JRE,有了JRE就可以正确的执行java程序了,但是光有JRE不能开放Java程序,所以JRE+开发工具=JDK,有了JDK,就可同时开发,执行JRE.`

常用DOS命令 ★★★

通配符

*代表一个字符串

?代表一个字符

用法:通配符一般用于文件名的关键字查找。
例如我们要查找以字母y开头的所有文件,可以输入以下命令:dir y*.*;
如果要查找所有扩展名为exe的文件,可以用dir .exe。?只代表一个字符
例如我要查找第二个字母为s的所有文件,可以输入:DIR ?s*.*。

参数意义

/p 显示信息满一屏时。按任意键显示下一屏

/o 排序显示。

/s 将目录与子目录的全部文件名/目录都显示。

/w 只显示文件名或者目录名,每行五个。

/a 显示隐藏文件

命令

  • dir 显示目录文件与子目录信息
  • md 创建一个目录,格式 md[C:]path
  • cd 改变或者显示当前目录,格式 cd[C:][ptah]
    • cd …/ 或者 cd … 返回上一层目录
    • cd / 返回根目录
  • rd 删除空子目录
  • copy 复制
  • ren 重新命名,格式ren[C:][path] filename1 filename2
  • cls 清屏
  • exit 退出
  • ipconfig 查看ip信息

注释

  • 单行注释: //
  • 多行注释: /* 注释内容 */
  • 文档注释: /** 文档树枝 */

关键字(保留字)

可以理解成被占用的名字

  • 特点

    • 关键字全部为小写
    • 编辑器显示为语法高亮
  • main不是关键字
    • 可以理解为一种约定,是检测程序的一个入口。

基础数据类型 ★

数据类型 关键字 字节大小 取值范围
整数 byte 1 -128~127
. short 2 -32768~32767
. int 4 日常范围约-231~231
. long 8 足够大
浮点数 float 4 日常小数范围
. double 8 小数不够表示就用这个
字符 char 2 0~65535(ascii)
布尔 Boolean 1 true、false

变量使用的规范 ★

  1. 先定义后调用
  2. 一条语句可以定义多个变量,逗号分隔
  3. 在定义float与long类型时候,后缀加F/f与L/l,前者无所谓,但是long建议大写,小写的l容易与1混淆。
  4. 请注意变量的作用域,也就是作用范围,注意区别全局与局部变量
  5. 变量命名要见名知义,注意命名规范

scanner包输入

  • 三步骤

    • 导包

      • import java.util.Scanner;
    • 创建对象

      • Scanner name = new Scanner(System.in);
      • 实例化接受输入数据
        • int i = name.next()

          在接收用户输入时,遇到空格结束。
          例如:qwe er er
          接收后,实际接收的是 qwe

        • int i = name.nextLine()

          在接收用户输入时,遇到换行结束。
          例如:qwe er er
          接收后,实际接收的是 qwe er er

  • 常用方法
    • 如图
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1rea6jk-1616728708325)(http://img.ensio.cn/usr/uploads/2020/12/106960889.jpg “图一”)]

标识符/命名规范 ★★

  • 小驼峰命名法

    适用于变量等

    除第一个单词首字母小写,其他单词首字母大写

    例如:isName 、stuName 、classPath

  • 大驼峰命名法

    适用于类、函数、属性等

    每一个单词首字母都大写

    例如:StuName 、StuScouse、StuScTotal

类型转换 ★★

隐性类型转换

在进行隐性类型转换或者赋值时,要注意类型的字节,不能讲字节过大的类型转换或者赋值给字节小于前者的类型。

! byte、short、char 在参与运算时,会先转换为int,再参与运算,运算结果的类型为int。

package one;
public class one {public static void main(String[] args) {byte a = 2;byte b = 2;// byte c = a + b;// 会出现错误,(a+b)运算规则为(int)a + (int)b = (Byte) 4// 正确的写法为:byte c = byte(a + b);}
}

例子

package one;
public class one {public static void main(String[] args) {int a = 10;byte b = a;}
}
// 出现下面错误
> Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from int to byte
> 出错原因是因为:int字节为4,而byte的字节为1,所以不能将字节过大的int 赋值给byte

强制转换 ★

可以将数据表示范围大的类型 转换为 范围小的类型

一般情况下,基本可以随便用,但有时候也要考虑到 经过强制类型转换后,可能会损失精度。

 package one;public class one {public static void main(String[] args) {int a = 10;float b = 1.5f;double c = (double)a;int d = 10;byte e = (byte)a;System.out.println(a+"\n"+b+"\n"+c+"\n"+d+"\n"+e);}}
//
>   101.510.01010

运算符

要注意[扩展赋值运算符],自带强转!!!

  1. 算数运算符

正常运算,要注意不同类型参加运算时,类型的精度变化过程

  1. 自增自减

单独运算时,规则不变,但是在参与其他运算时,要注意优先级。
在一条语句中,要注意a–、a++参与运算后再自增自减。

package one;
public class one {public static void main(String[] args) {System.out.println(10/3);// 3System.out.println(10/2);// 5System.out.println(10/3.0);// 3.333333}
}
  1. 赋值运算符

要注意到 = 与 == 之间区别

  1. 关系运算符(比较运算符)

+= -= *= /= ==

  1. 逻辑运算符(比较运算符)

注意到短路原则:&& 前置值为false时,结果直接为false,后面的表达式不参与逻辑运算。
|| 同理,前置值为true时,后面表达式不参与运算,直接得出结果。。

  1. 三元运算符

注意到三元运算符的复合使用。

字符与字符串的一些问题 ★

  • 注意字符在参与运算时,优先级问题。
  • 注意字符串强大的包容性。

语句在三大结构的作用域

当结构体内只有一条语句(单语句)时,可以省略大括号,可以加上,但是可以一定情况下使代码更加明了。

当结构体内,语句多余一条时,要注意结构体的作用域。

控制语句

选择语句

当条件语句的语句内容只有一条语句时,可以不加{},当多余一条时,必须加{}。
判断条件要加()。
可以与循环或者自身嵌套使用。
条件判断的结果一定为true或者false

  • if

    • 干对的事,没有就什么都不做
  • if…else
    • 分析判断语句值性,对的,我要干什么,错的,我应该怎么做
  • if…else if…else
    • 要么…要么…那么…
  • 可以相互多层嵌套

循环语句

解决大量重复性的操作,减少开发工作量,提高编码效率,大部分可以转化为递归实现。

  • for

    • 主要规避一些小错误
    • 初值,循环条件,结束条件,增值,作用域等等
  • while
    • 相比for,在一定情况下更加灵活,例如可以在条件判断时,增加结束条件
  • do…while
    • while的补充,比while多执行一次,无论条件是否成立。会先执行do循环体内容,再判断。适用于一些特殊情况,例如调试。

IDEA 快捷键

一些常用快捷键记录

快捷键 说明
main/psvm + 回车 快速生成main方法
sout + 回车 快速生成输出语句
Alt + 1/4 打开/隐藏工程目录/控制台
Ctrl + Alt + L 格式化代码
Alt + Enter 代码修正提示
Ctrl + D 向下复制一行
Ctrl + X 剪贴当前行
Ctrl + / 批量单行注释
Ctrl + Shift 批量多行注释
Alt + Shift + ↑/↓ 上/下移当前行

数组

数组定义

要注意数组同属问题,相同类型放一个同类型数组中,这也就是数组类型定义的必要性。

  • int arr[];
  • int[] arr;

数组初始化

静态初始化

初始化时,就指定数组存储元素,系统自动计算数组长度

  • 简易写法

    • 简化的知识书写格式
    • int[] arr = {11,22,33};
  • 复杂写法
    • int[] arr = new int[]{11,22,33};

动态初始化

初始化时,先指定数组长度,系统自动初始化默认元素(例如整数0小数0.0),数组元素后期存入。

  • 两种写法

    int[] arr = new int[3];
    int arr[] = new int[3];
    

二维数组

存储多个一维数组,多用于列表,表格

动态/静态初始化

跟一维数组差不多
要注意二维数字定义
例如:int[] arr[] = new int[][]; 也是对的

方法(函数)

方法重载

同一个类中,方法名相同,参数不同
参数不同;个数不同;类型不同;顺序不同
注意:识别方法之间是否构成重载关系,只看方法和参数,与返回值无关

其他重点

;

java中进制表示

  • 二进制 0b
  • 八进制 0
  • 十六进制 0x

大小写都可以

java基础知识点整理一相关推荐

  1. Java基础知识点整理(2022年最新版)

    看了网上很多关于Java基础知识点整理的文章,但是感觉都不是很好,要么不全面,要么不准确,要么排版太乱了,所以今天整理了一份Java基础知识点整理(2022年最新版),希望对大家有帮助哈~ 由于本文篇 ...

  2. java基础知识点整理大全

    数据类型 1)==用于基本数据类型的比较,在引用数据类型上面使用的时候比较的是地址值 例: 下面程序的运行结果是() String str1 = "hello"; String s ...

  3. java重要基础知识点_java基础知识点整理

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 java基础知识点整理1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. ...

  4. 百度 java基础_java基础知识点整理

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 java基础知识点整理1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. ...

  5. 整理的java基础知识点笔记

    java基础知识点 (涉及到图片的资源因为在电脑本地,挨个挨个找太浪费时间就不找了) 基础点 **字节:**每逢8位是一个字节,这是数据存储的最小单位. 计算机中的数据转换: ​ 1 Byte = 8 ...

  6. 2022全新Java基础知识整理,阿里大牛纯手绘思维导图文档

    最近趁着年初空闲的时间,总结一下自己这么多年来使用Java的一些心得体会,主要是一些Java基础知识点相关的, 分享给刚刚入门的Java程序员和需要巩固Java基础的朋友们,希望可以给大家一些经验,能 ...

  7. Golang基础知识点整理

    Golang基础知识点整理 Go语言strconv包实现字符串和数值类型的相互转换 1 Slice 1.1 定义 1.2 切片的底层原理 1.3 切片的创建方式 1.3.1 从已有的数组或切片生成新的 ...

  8. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  9. mysql 存储引擎 面试_搞定PHP面试 - MySQL基础知识点整理 - 存储引擎

    MySQL基础知识点整理 - 存储引擎 0. 查看 MySQL 支持的存储引擎 可以在 mysql 客户端中,使用 show engines; 命令可以查看MySQL支持的引擎: mysql> ...

最新文章

  1. 如何设计出优秀的Restful API?
  2. c# winforms TextBox的记忆功能
  3. LeetCode 685. 冗余连接 II(并查集)
  4. Flutter 随机颜色 颜色处理工具类
  5. (50)System Verilog 类中约束数组元素
  6. gitbook使用实录
  7. Redis-01-NoSQL简介及Redis数据库安装
  8. 利用easyCHM制作JavaAPI帮助文档
  9. 依据CCS分类建树(简单方案)
  10. 【资源】DNW驱动,Win7 64位可用
  11. 使用python Tqdm 进度条库让你的python进度可视化
  12. Linux下的延时函数
  13. 博客 Gif 动态图制作 - 插入gif动态图 GifCam
  14. php邮箱群发,PHP的邮件群发系统phplist配置方法详细总结
  15. 什么是SEO,新手SEO须知!
  16. ILog项目开发流程【一】
  17. python:ImportError: cannot import name ‘xx‘ from ‘xxxx‘
  18. video标签的属性和事件用法大全
  19. dom绑定click事件无效及解决办法
  20. 新松机器人袁_新松机器人有多大成长空间?

热门文章

  1. MVC的Filter应用小结
  2. 第一步:Spring访问数据库(jdbcTemplate)
  3. 两个类相互包含对方成员的问题(2)
  4. linux 性能检测工具之 dstat
  5. 路由器访问控制列表基础知识
  6. php视频转数据流,图像转数据流-aspphp | 鬼仔's Blog鬼仔's Blog
  7. python 堆_【译】Python中的堆排序
  8. 公交/地铁出行测试点
  9. python中matplotlib出错_Python中使用matplotlib的报错问题
  10. 最常用的 Linux 命令汇总,以后总会用到的