2019独角兽企业重金招聘Python工程师标准>>>

一、static和final

学习Java那么久,好像自己就没有怎么用过final,所以对fianl的理解不够。final不但出现在变量的修饰里面,还可以出现在方法和类的修饰。final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。final方法锁定方法,子类不能覆盖修改方法,同时方法会高效。final变量final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变,final是指引用的变量不能不能变,但是引用所指向的对象中的内容可以变,同时如果是null的final变量可以赋值一次。

二、一个“.java”文件可以包含多个类

可以有多个类,不过只能有一个“public”的类,而且名字跟文件名一致。

三、&和&&

&和&&都可以作为逻辑运算的与的运算符。但是&&会出现短路功能,也就是说如果前面的条件不成立的时候,后面的条件不会执行,例如:(1==2&&j++>1)。

&还可以作为位运算,&表示按位与运算(相同位的两个数字都为1,则为1;若有一个不为1,则为0)。

四、integer和int

int是Java的8种原始数据类型之一。Java为每个原始数据提供封装类,integer是Java为int提供的封装类。int的默认值是0,而integer的默认值是null。

五、Java中string的创建

Java中String是一个特殊的包装类数据有两种创建形式:

1、String s = "abc";

2、String s = new String("abc");

第一种先在栈中创建一个对String类的对象引用变量s,然后去查找"abc"是否被保存在字符串常量池中,如果没有则在栈中创建三个char型的值'a'、'b'、'c',然后在堆中创建一个String对象object,它的值是刚才在栈中创建的三个char型值组成的数组{'a'、'b'、'c'},接着这个String对象object被存放进字符串常量池,最后将s指向这个对象的地址,如果"abc"已经被保存在字符串常量池中,则在字符串常量池中找到值为"abc"的对象object,然后将s指向这个对象的地址。

第一种特点:JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。

第二种可以分解成两步1、String object = "abc"; 2、String s = new String(object); 第一步参考第一种创建方式,而第二步由于"abc"已经被创建并保存到字符串常量池中,因此jvm只会在堆中新创建一个String对象,它的值共享栈中已有的三个char型值。

第二种特点:一概在堆中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象。

六、error和exception

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

七、sleep() 和 wait()

sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过后,cpu才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep方法让出了cpu,但其他被同步锁挡住了的线程也无法得到执行。wait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其他线程调用了notify方法(notify并不释放锁,只是告诉调用过wait方法的线程可以去参与获得锁的竞争了,但不是马上得到锁,因为锁还在别人手里,别人还没释放。如果notify方法后面的代码还有很多,需要这些代码执行完后才会释放锁,可以在notfiy方法后增加一个等待和一些代码,看看效果),调用wait方法的线程就会解除wait状态和程序可以再次得到锁后继续向下运行。

八、run()和start()

在java里start()是启动线程,run()是启动线程后执行的方法。

九、arraylist和vector

1、同步性

vector线程安全,arraylist非线程安全。

备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,记住Vector与Hashtable是旧的,是java一诞生就提供了的,它们是线程安全的,ArrayList与HashMap是java2时才提供的,它们是线程不安全的。所以,我们讲课时先讲老的。

2、数据增长

arraylist和vector都会用一个初始的容量大小,当存储超出大小的时候,vector增长原来的一倍,arraylist增长原来的0.5倍。

十、list和map

一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合。list是有顺序的,并且允许有重复;map中存储的数据没有顺序,其键值不允许存在重复,但是值是允许重复的。

十一、arraylist、vector和linklist

arraylist和vector都是使用数组方式存储数据。此数组元素数大于实际存储的数据以便增加和插入元素。它们允许按序号索引元素,但是插入元素也涉及数组元素移动等内存操作,所以索引快和插入慢。vector由于使用线程安全,所以效率相对arraylist差,其实在新的jvm上它们的效率相差不大。linklist采用双向链表实现存储,按序号索引数据需要按前向遍历或者后向遍历,但是插入数据时,只要记录前后项数据既可,所以插入速度快。linklist是非线程安全。

十二、heap和stack

Java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量。当这个方法结束时,分配给这个方法的栈也会释放,这个栈里面的变量也会随之释放。

堆与栈作用不同的内存,一般用于存放不放在当前方法栈中的数据,例如使用new创建的对象都放在堆里,所以它不会随这方法的结束也消失。方法中的局部变量使用final修饰后,放在堆中而不是栈中。

转载于:https://my.oschina.net/u/1461902/blog/345421

大四Java复习笔记之Java基础相关推荐

  1. Java复习笔记:Java常用的API

    Java常用API 一.API概述 ​ API (Application Programming Interface) : 应用程序编程接口 Java API :指的就是JDK中提供的各种功能的Jav ...

  2. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  3. 【Java 系列笔记】语法基础 + Spring + Spring MVC + SpringBoot + 数据结构

    Java 强化笔记目录 Java 语言基础 Java 架构师体系课程 一些课程 前端笔记:前端学习笔记 Java 语言基础 回头补基础(此基础非小白)系列,学校教的其实真的就是一些皮毛而已,怕是连门都 ...

  4. 【Java学习笔记】JavaSE基础全程笔记

    前言 该文章为Java自学笔记:JavaSE基础全程笔记,导航部分 学习视频为https://www.bilibili.com/video/av250694651 Java基础语法 Java面向对象基 ...

  5. Java学习笔记1:Java中有关print、println、printf的用法和区别

    Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...

  6. JAVA学习笔记(1)【基础知识】

    JAVA学习笔记DAY_1 提示:关于java系列的内容只是本人在老师的指导下和自学过程中的一些学习笔记,如果存在错误敬请批评指正! 文章目录 JAVA学习笔记DAY_1 前言 一.Java语言未来的 ...

  7. Java学习笔记(java基础)

    Java学习笔记(第一周) Java 介绍 Java 发展方向 JVM , JDK , JRE 名词解释 Java语言的特点 Java安装 安装包的下载 配置环境变量 验证是否安装成功 Java的第一 ...

  8. java复习系列[1] - Java 基础

    文章目录 Java 基础 final static Java的switch支持的数据类型 goto (扫盲 - 一般不用) String 不可变 不可变的优势 序列化 序列化的 *serialVers ...

  9. java复习笔记4--SpringCloud系列二:五大神兽之Eureka

    前面两天介绍了SpringCloud的基础知识,以及窥探了一下加载流程,整个代码还是很长并且晦涩的,一定要多debug去跟进,看每个对象何时创建和赋值,一步步跟着走,这样才能对整个流程有一个很好的了解 ...

最新文章

  1. iphone开发UITable内嵌不同风格Table
  2. apache.camel_Apache Camel 2.19发布–新增功能
  3. maya python 开根号_maya python
  4. 从技术平台到aPaaS平台
  5. Django登录界面
  6. php-mysql rpm_Linux下的mysql apache php rpm安装方法步骤(转载并补充细节)
  7. python从0开始学编程第三天第9讲_【原创笔记1】Python从0学起——Starting from 0 learning Python(The First Day)...
  8. linux命令4--rmrmdir
  9. 【linux】gcc命令
  10. 计算机485通讯原理,软件实现 - 基于Modbus协议的RS485总线通讯机设计原理及应用...
  11. 正则摄动法matlab,孤立特征值情况的矩阵摄动法
  12. 解决错误:org.apache.ibatis.binding.BindingException
  13. css3 中的calc用法
  14. VS2005宏无法运行的问题(打了补丁MS14-009之后)
  15. jsp调试java_[求助]jsp+javaBean调试环境问题!
  16. 能排毒的芦笋海苔三明治
  17. android homme2016款,丁日的最爱:Android Homme。WTF!安卓家?
  18. 目前最详细的对国内跨境电商的纯干货分析
  19. YARN 作业 Staging目录的用途及配置
  20. 资产价格与波动率的关系

热门文章

  1. SpringBoot微信公众号授权访问认证文件部署
  2. pyqt5教程12:拖放功能
  3. Python的setuptools详解【1】
  4. java内部错误2755_内部错误2755.(安装软件出问题啦)
  5. Vue中实现输入框Input输入格式限制
  6. formdata 接受参数中带有class 对象_Django(五)- 请求与响应 - request对象
  7. go语言打印日期_判定是否掌握Go语言的最重要标准:对并发的掌握
  8. Mybatis框架的操作步骤和细节处理
  9. 16.Hadoop架构再探讨第1部分
  10. 【C#学习】delegate(委托) 和 event(事件)