Java基础知识点

作者: xxKarina | 来源:发表于2017-12-09 12:07 被阅读200次

    本文属xxKarina原创,转载请注明
    个人博客地址:
    https://xxkarina.github.io/

    不知道为什么,最近很喜欢Java这门语言,个人认为,学习一门编程语言,扎实的基础是相当重要的,所以在这里,我想跟大家分享一下我掌握的知识点

    嗯,不说大家都知道,Java是一门兼容性很好的语言,跨平台支持的很好,比较常用的有LinuxWindows,所以首先,我将会跟大家分享以下两者的区别

    Linux与Windows的区别

    Linux是一个开源的操作系统,与Windows有三大不同点:

    • 文件系统不同:Windows是盘符,Linux是目录
    • 外部设备映射不同: Windows是盘符,Linux是挂载点(目录)
    • 安全级别不同: Windows安全级别低,Linux安全级别高,因为是服务端系统 /home——具有最高权限

    c语言和Java的区别

    而对于c语言和Java的区别的话,主要就是在编译过程

    • c文件,编译,直接编译为可执行文件(0,1)
    • java文件,编译,字节码文件(.class),jvm(不同平台有不同的JVM)运行字节码文件,计算机识别(0,1)

    JDK、JRE、JVM

    上面提到了JVM(Java虚拟机),那我们就来看下JDK、JRE、JVM三者的关系

    • JDK - Java开发工具包
    • JRE- Java运行环境
    • JVM - Java虚拟机

    三者的区别可以用一句话进行概括:运行一个Java程序所需要的最小环境是 JRE,开发一个Java的最小环境是JDK,加载字节码文件,实现跨平台需要用到JVM

    环境

    说到环境这个词,我就不得不说一下Java的IDE(集成开发环境)eclipse,这是一款主流的Java开发环境,代码提示,搭建目录结构等等,都是十分赞的,推荐使用

    eclipse常用的快捷键,我这里想跟大家分享一些:

    • 输入main的时候,然后就使用Alt+/之后就可以出现代码提示
    • Alt+/是比较常用的一个代码提示快捷键(可以完成一些代码的插入)
    • CTRL+1(快速修复)就是可以快速查看错误并且快速修复
    • Shift+Enter(当前行下插入一个空行,不限位置)
    • ctrl+shift+enter(当前行上插入一个空行)
    • ctrl+d删除当前行
    • Alt+上下键,可以交换语句的位置
    • ctrl+alt+上下键可以快速的复制一行,当时有时候会和电脑自带的快捷键冲突
    • 所以需要自定义一下,改为ctrl+上下键
    • ctrl+shift+f(格式化当前代码)
    • ctrl+f(查找与替换)
    • ctrl+shift+x(把当前选中的文本全部变成小写)
    • ctrl+shift+y(把当前选中的文本全部变成大写)
    • ctrl+/(注释或取消注释当前行)
    • ctrl+shift+/(注释多行)
    • ctrl+shift+(解除多行注释)

    命名

    有了环境之后就可以开始搭建我们的目录结构了,搭建目录结构就需要使用到命名操作,在一门编程语言中,命名是对团队合作的十分重要的一步,一个好的命名可以给开发带来极大的便利

    变量的命名其实比较基础的就是要做到“见名知意”,变量的命名采用驼峰式命名法,类名的首字母大写,命名之后就需要声明变量和初始化变量,凡事都是需要先有了才可以对其进行操作,变量也是一样,需要在使用前进行初始化,而且必须与数据类型相匹配。

    还需要注意的一点是:默认的整数会杯认为是int类型,默认的小数是double型
    整型直接量可以直接赋值给byte,char,short,byte,char,short只要参与运算,则一律转为int

    分支结构

    分支结构有:if语句,if else语句,else if 语句,switch case语句
    需要注意的是:在Java中,存在变量的作用域
    变量的作用于就是从变量声明到包含这个变量的最近的大括号结束
    当作用范围重叠时,变量不能重名

    除了分支结构,我们经常使用的还有循环,所谓循环就是:一组相同或相似的语句被有规律的重复性执行
    对于循环,我们需要做到的三点是:
    循环三要素:
    1.循环条件初始化
    2.循环条件(以循环变量为条件)
    3.循环变量的改变(向着循环结束变)——在循环过程中改变的量就是循环变量

    这里,我想用一道经典的题来进行讲解:

    //题目如下:用编程实现9+99+999+...+99..9(十个九),并且输出运算结果
    //题目分析如下:
    //设num为每次加的那个数,可以看到,当
    /**
    * i=1  num=9
    * i=2  num=99
    * i=3  num=999
    * i=4  num=9999
    */
    /**
    * 9到99  9*10+9
    * 99到999  99*10+9
    * 999到9999  999*10+9
    */
    // 有了以上的规律,编写程序就不是什么难事啦
    
    

    我们知道,循环常用的有三种:当到型循环(while),直到型循环(do-while),for循环
    那面对这三种我们应该怎么选用呢,请看下面几点:

    • 如果题目中出现“当”这个字眼的话,一般我们会选用当到型循环
    • 如果题目中出现“直到”这个字眼的话,我们一般使用直到型循环
    • 如果题目给出的了固定的循环次数,我们可以选用for循环

    上面的三点看起来可能十分不起眼,那我们现在就来实战演练一下:

    题目:有数列2/3、4/5、6/9、10/15……求此数列前30项的和
    分析:对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for循环语句来编写比较方便

    题目:年存款利率为3%,本金为10000,存款总额超过20000时,求具体的收益
    分析:对于这类型的题,其实隐含了”当“字,当存款总额超过20000时,求具体的收益。用while循环语句来编写比较方便

    数据结构

    前面我们一直在说编写程序,那程序到底是什么呢,简单的说,程序是由算法数据结构组成的,以上的分支结构和循环都是流程问题亦即算法问题,所谓的数据结构就是把数据按照某种特定的结构来保存,设计合理的数据结构是十分重要的,数组就是一种基本的数据结构

    数组:相同的数据类型的元素组成的集合就是数组
    数组的声明有多种方式,常用的如下:

    int[] arr = new int[4];
    
    int [] arr = {1,2,3};
    
    int[] arr;
    arr = new int[4];
    
    int[] arr = new int[]{1,2,3};
    

    数组也有很多实用的API,具体的,大家可以查阅相关的文档

    方法

    方法用于封装特定逻辑功能,尽可能独立,可以被反复调用,减少代码输出

    方法定义五要素

    • 修饰词
    • 返回值类型
    • 方法名
    • 参数列表
    • 方法体

    方法的参数可有可无,有参数更加灵活
    当方法需要返回结果时,设置特定返回值类型,不需要结果的时候,为void
    返回结果通过return 关键字,return 后的数据必须和返回值的类型匹配

    类——面向对象

    我们看到的东西其实都可以称之为对象,将对象抽象出来,就有了类

    类是一种数据类型
    类中只能包含:属性(变量)和行为(方法)
    一个类可以创建多个对象
    同一个类的多个对象,结构相同,数据不同

    将类实例化,我们可以使用new

    new 出来的东西在堆里面,其余在栈里面

    成员变量都是在堆里面的
    局部变量在栈里面
    成员变量在创建对象时存在,对象被回收时消失
    垃圾回收器不定时回收没有引用指向的对象,回收过程透明
    自动调用方式:System.gc()
    内存泄漏是由于不再使用的对象未被及时回收
    建议,对象不用时,对象及时赋值为null(空,没有指向对象)

    讲到类就脱不了方法,讲到方法,就不得不提及下方法的重载,讲到方法的重载就需要知道方法的签名

    方法的签名:就是方法名和参数列表
    一个类中不可以有两个方法的签名完全相同,那重载(overload)指代的就是方法的签名不同(方法名相同,参数不同)
    一个类中,经常见到的不外乎构造方法,而,构造方法是可以重载的
    那构造方法是什么呢,有什么作用呢,一般用来做什么呢

    • 构造方法与类同名,没有返回值类型
    • 构造方法常常用于给成员变量初始化
    • 构造方法是在创建对象时被自动调用
    • 编辑器会在没有显示指明构造方法的情况下,默认给出一个无参数的构造方法

    我们知道,类是需要实例化之后才可以使用的,那实例化出来的那么多个对象在使用的时候怎么区分呢,于是我们就有了this,但是,需要注意的是,这个不是指针

    Java 没有指针,没有二维数组(叫做数组的数组)
    this在这里只是一个简单的指向作用,谁调用它,就指向谁

    帧栈和方法区

    有调用就会有存储,存储主要有两个(帧栈和方法区)

    在Java中,调用一个方法就会得到一个“帧栈”,帧栈中存储的就是局部变量,方法调用结束之后,帧栈就消失,局部变量也会跟着相应的消失

    相应的还有方法区:方法区用于存放类的信息,Java程序运行时,首先啊会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区,类的各种信息都在方法区存储
    所以简单的总结一下就是

    方法区:存储类的信息(.class及方法)
    方法只有一个,通过this关键字区分

    相关文章

      网友评论

        本文标题:Java基础知识点

        本文链接:https://www.haomeiwen.com/subject/sxtuixtx.html