JAVA入门自学要点整理沉淀

概述

优点:跨平台性(JVM),面向对象性,健壮性(无指针与内存申请释放),安全性高,简单性(C艹简化版),高性能(JIT实现),社区繁荣!

缺点:复杂,严谨(还是Python香),不适用于所有领域

JVM(全名JAVA虚拟机)

功能1:实现JAVA的跨平台性

使用JVM前后对比

功能2:自动内存管理

1.JAVA程序在运行过程中,涉及到运算的数据分配、存储等都由JVM来完成

2.JAVA消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间

3.GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放内存空间而导致的内存泄漏

(但JAVA程序依然会出现内存溢出和内存泄露问题!)

注:内存溢出:即为超出内存容量(易发现);内存泄露:即是垃圾但没回收(不易发现)

JDK 是 Java Development Kit(Java开发工具包)的缩写。它是用于开发 Java 应用程序和 Applet 的软件开发工具包,包括了 Java 运行环境(JRE),编译器(javac),调试器(jdb),一些 Java 工具(如 javadoc 和 javap),以及其他一些基本的工具。

JDK 通常包括以下主要组件:

  1. Java Runtime Environment (JRE):Java 运行时环境,提供了在计算机上运行 Java 程序所需的所有类库和资源。JRE 是运行 Java 程序的基本环境,它包括 Java 虚拟机(JVM)和核心类库。

  2. Java Compiler (javac):Java 编译器,用于将 Java 源代码文件(.java 文件)编译成 Java 字节码文件(.class 文件)。

  3. Java Virtual Machine (JVM):Java 虚拟机,用于在计算机上执行 Java 字节码。JVM 是 Java 程序的运行时引擎,它负责解释和执行 Java 字节码。

  4. Java Development Tools:Java 开发工具,如调试器(jdb)、文档生成工具(javadoc)等,用于帮助开发人员编写、调试和文档化 Java 程序。

JDK 是开发 Java 应用程序和 Applet 的必备工具,开发人员可以使用 JDK 提供的工具和类库来编写、编译和调试 Java 程序。在选择 JDK 版本时,通常会考虑到其功能、性能、稳定性以及与特定操作系统的兼容性等因素。

\n换行 \t制表符(四空格)

推荐自学书籍(来自shk):《JAVA核心技术》、《Effective JAVA》、《JAVA编程思想》

插入一些八股真题

一个'.java'源文件中是否可以包括多个类?有什么限制?

        可以!

        一个源文件中可以声明多个类,但是最多只能有一个类使用public进行声明,且要求声明为public的类的类名与源文件名相同。(怀念py)

常用终端JAVA命令(javac, java, javap, jar, javadoc, jps, jstat, jconsole, jstack)

如何看待Java是一门半编译半解释型的语言(某程)

变量与运算符

关键字和保留字

关键字定义与特点

定义:被JAVA赋予特殊含义,用作专门用途的字符串(单词)

特点:关键字中所有字母都小写

官方地址:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

标识符

JAVA对各种变量、方法和类等要素命名时使用的字符序列称为标识符

技巧:凡是可以自己起名字的地方都叫标识符

定义合法标识符规则

由26个英文字母大小写,0-9,_或$组成

数字不许开头

不可以使用关键字和保留字,但可以包含他俩

JAVA中严格区分大小写,长度没有限制

标识符不许含空格

转义字符补充

当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本类型的值将自动转化为字符串(String)类型

逻辑运算符

位运算符细节(二进制)

运算符的优先级

运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。表中上一行优先于下一行

只有单目运算符、三元运算符、赋值运算符是从右到左运算的。

JAVA程序基本结构

顺序结构

程序从上到下逐行执行,中间没有任何判断和跳转。

分支结构

根据条件,选择性地执行某段代码,有if...else 和 switch-case两种

插:生成随机数用Math.random(),生成[0,1)的随机数

switch(表达式)中表达式的值必须是下述几种类型之一:

byte, short, char,  int, 枚举(JDK5.0), String(JDK7.0)

case子句中的值必须是常亮,不能是变量名或不确定的表达式值;

同一个switch语句,所有case子句中的常量值互不相同;

break语句用来在执行完一个case分支后使程序跳出switch语句块,如果没有break,程序会顺序执行到switch结尾

default子句是可任选的。同时位置也灵活,当没有匹配的case时,执行default

问题:if和switch语句很像,具体什么场景用哪个语句?

        如果判断具体数值不多且符合上述switch表达式类型,虽两种都可用,但使用switch效率稍高

        其他情况:对区间判断,对结果为布尔类型判断,使用if,if使用范围更广

        也就是说:使用switch-case的,都可以改写为if-else

循环结构

根据循环条件重复性执行某段代码,有while,do...while,for三种

注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

语法格式

for循环:

while循环:

do-while循环:

特殊流程控制语句:

break语句:用于终止某个语句块的执行

{ ...
  break;
  ...
}  

当break出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块:

label1: { ......
label2:        { ......
label3:                {......
                    
                        break label2;
                        ......
                        }
               }
         }

continue语句:

只能出现在循环结构中;用于跳过其所在的循环语句块的一次执行,继续下一次循环;

出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过哪一层循环

return语句:

并非专门用于结束循环,他的功能是结束一个方法。当一个方法执行到一个return语句时,此方法将被结束。

与break, continue不同之处是,不管他处于多少层循环之内,都直接结束这个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值