JAVA基础知识(适合零基础人员)

前言:

这半年不太勤快,一直没更新,今天开始会持续更新记录学习以及工作中的心得!

之前发布介绍了什么是Java,那么今天我们来讲解介绍下Java的基础篇,特别适合Java零基础小白学习。

1. java的加载与执行

  java程序加载执行需要两个命令:

                                         javac 文件名    这个命令执行后会编译加载.java文件(java文件为源文件),生成.class文件(字节码文件)

                                        java 文件名  这个命令执行后会执行class文件,运行java程序。

    java的执行过程:java 类名——>启动java虚拟机(jvm),jvm会启动类加载器ClassLoader——>加载器会去硬盘上搜索相应的class文件,并把它装载到java虚拟机中——>虚拟机将class文件解释为二进制数据,然后操作系统执行二进制,和底层硬件平台进行交互。

2.Java的三大变量

        实例变量:在堆区中,在类中声明的变量就是实例变量,也叫对象变量

        静态变量:在方法区,用static修饰的变量就是静态变量,静态变量可以用类名直接访问,属于类。

        局部变量:在栈区中,出现在一个作用域中,常出现在方法、函数中,只能在哪个作用范围之内使用。

3. JDK、JRE、JVM之间的关系

        JDK:Java开发工具箱

        JRE: Java运行环境

        JVM:Java虚拟机

        JDK包括JRE,JRE包括JVM

4. Java语言中的包机制

        1. 包又称为package,Java中引入package这种语法机制主要是为了方便程序的管理。不同功能的类被分门别类放到不同的软件包当中,查找比较方便,管理比较方便,易维护。

        2. 定义package:

                在java源程序的第一行上编写package语句。

                package只能编写一个语句。

                -语法结构:  package 包名;

        3. 包名的命名规范:

                公司域名倒序+项目名+模块名+功能名;

                例如:

                        com.baidu.oa.user.service;

                        org.apache.tomcat.core;

        4.包名要求全部小写,包名也是标识符,必须遵守标识符的命名规则。

        5.一个包将来对应的是一个目录。

        6. import关键字:

                        导包

                                语法:import 包名;

                        java.lang.*; 不需要手动引入,系统自动引入。

                        lang: language语言包,是java语言的核心类,不需要手动引入。

                        那什么时候需要import导入包呢?

                                当不是java.lang包下,并且不在同一个包下的时候,需要使用import进行引入。

5.Path环境变量

        windows系统搜索硬盘上的命令是从path环境变量中搜索的,windows系统搜索硬盘上的命令首先会从当前目录下搜索,如果搜不到,则会从环境变量path指定的路径当中搜索该命令,如果也搜不到,则会报错误。所以当想在windos系统上的任意位置使用windos命令时,请将要执行的命令的目录配置到Path环境变量中,就可以在windos系统任意位置执行了。

6.变量

变量是内存中的一块空间,这块空间有名字(也就是变量的名字)、数据类型和字面值

 变量是内存中存储数据的最基本的单元

所以变量有三部分组成:名字、数据类型、字面值,其中数据类型是知道程序在运行阶段应该分配多大的内存空间。有了变量以后,就可以重复方法,节省了内存.

String str = "你好代码";

7. 作用域

什么是作用域?

答:可以起到正常作用的范围

什么是变量的作用域?

答:代码里面一个变量它可以使用的范围

public class BinarySearch {
    private int b = 2;
    public void init(){
        int a = 1;
    }

}

比如以上代码里面,a的作用域就是在init()方法中,超出init()方法之外的地方,a是都不能使用的。

变量根据作用域分为局部变量和全局变量

以上代码中,b就是全局变量,a就是局部变量

8.标识符

在java源代码中凡是可以自主命名的都是标识符,例如:类名、方法名、方法的形式参数名称、变量...

命名规则:只能有字母、数字、_、$组成,不能是其他的符号,并且不能以数字开头、关键字不能用来命名。

命名规范(不是硬性的,不属于语法,只是建议):

1.最好是有意义的名称,例如:apple,pear

2.驼峰式命名,例如:userService

3.类名、接口名:首字母大写,其后每个单词首字母大写

变量名、方法名:首字母小写,其后每个单词首字母大写

常量名:全部大写

9.递归

递归就是方法自身调用自身

使用递归的时候,必须添加结束条件,没有结束条件,会发生栈内存溢出错误。

java.lang.StackUverflowError

原因:一直压栈,没有弹栈,栈内存不够

能够使用循环代替递归的尽量使用循环,循环的执行耗费内存少一些,递归耗费内存相对多一些,另外递归使用不当很容易内存溢出,JVM停止工作。当然,只有极少数情况下,只能用递归,其他代码解决不了问题。

递归即使有了结束条件,即使结束条件是正确的,也可能会发生栈内存溢出错误,因为递归的太深了。

遇到递归导致的栈内存溢出错误是怎么办?

第一步:先检查递归结束条件是否正确

第二部:如果正确,可以调整JVM的栈内存大小。

10.对象和引用

        对象:在使用new运算符在堆内存中开辟的内存空间称为对象。

        引用:是一个变量,不一定是局部变量,还可能是成员变量。引用保存了内存地址,指向了堆内存当中的对象。所有访问实例相关的数据,都需要通过“引用”的方式访问,只有通过引用才能找到对象。只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。

11.类加载器

专门负责加载类的命令/工具 ClassLoader

JDK中自带了3个类加载器

        启动类加载器

        扩展类加载器

        应用类加载器

类加载器的过程:

假设有这样一段代码:String s = "abc";

        代码在开始执行之前,会将所需要类全部加载到JVM当中,通过类加载器加载,类加载器会找String.class文件,找到就加载。首先通过“启动类加载器”加载。

          启动类加载器加载位置:jdk目录/jre/lib/rt.jar

          rt.jar都是JDK最核心的类库

      如果通过“启动类加载器”加载不到的时候,会通过“扩展类加载器”加载。

        扩展类加载器加载位置:jdk目录/jre/lib/ext

       如果”扩展类加载器“没有加载到,那么会通过”应用类加载器“加载。

         应用类加载器加载位置:classpath中的类

java中为了保证加载类加载的安全,使用了双亲委派机制。

优先从启动类加载器中加载,这个称为”父“,”父“无法加载到,再从扩展类加载器中加载,这个称为”母“,双亲委派机制如果都加载不到,才会考虑从应用类加载器中加载,直到加载到为止。

12.相对路径和绝对路径

相对路径:相对于当前所在位置而言的,相对路径是相对于当前而言,从当前所在的位置作为起点。

绝对路径:在windos操作系统中路径起点为盘符的都是绝对路径,例如:C:\Users\Adminstrator

                   在linux操作系统中以/为起点的代表是绝对路径,例如:/etc

13.基本数据类型

整数型:byte short long int

浮点型:float double

布尔类型:boolean

字符型:char

在java中,在任何情况下,整数型的字面量值默认当作int类型来处理,如果希望该整数类型字面量被当作long类型来处理的话,需要在字面量后面添加L/l。

任何一个浮点型数据默认被当作double来处理,如果希望该浮点型字面量被当成float来处理的话,需要在字面量后面添加F/f。

14.注释和转义符

单行注释://

多行注释:/*注释内容*/

文档注释:/**

                *

                */

文档注释在以后将会被生成doc文档

\在java中是转义符,如果需要输出\,那么需要"\\"如此写。        

PS:如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

                                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值