Java基础


零碎

保留几位小数
扫描仪
系统当前时间

标识符


关键字


运算符号

  • 逻辑运算符

执行顺序& if else & switch

  • 顺序执行
  • 分支执行
  • 循环执行
  1. if else
  2. switch:case标签:
    类型为int,char,short,byte的常量表达式
    枚举常量
    javaSE7开始,case标签还可以是字符串字面量

数据类型

基本数据类型-8种
自定义数据类型:class,interface,enum

Paste_Image.png

String

String拼接可以用“+”直接拼接,也可以用concat方法,concat的底层结构是StringBuilder。如果字符串很长的话我们考虑用StringBuffer和StringBuilder。


String拼接
字符串替换
Paste_Image.png
Paste_Image.png

StringBuffer和StringBuilder

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

使用+号拼接字符串,每次拼接都会创建一个新的字符串,占用内容多,效率低。

拼接比较

数组Arrays

同样,得先看源码

源码,很多,没截完
数组的3种创建方式

只有第三种方法支持直接创建一个新的数组返回

只有第三种方法支持直接创建一个新的数组返回

获取数组长度length,是一个属性

length and 遍历
for each 也可以,前面的灵活一点
排序

二维数组

二维数组


数组相关的算法

简单算法
Paste_Image.png
Paste_Image.png

递归(Recursion):

就是在方法里面调用自己。
递是传递给自己
归是退出条件,在某些条件符合的时候,停止调用自己。如果没有退出条件会出现死循环,程序上会出现java.lang.StarkOverflowError这一异常。

递归算法例子:

  1. 计算阶乘


    老和尚讲故事
  2. 递归


    递归
  3. 斐波那契数列


    斐波那契数列
  4. 青蛙跳台阶
    一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。
    我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此n级台阶时的不同跳法的总数f(n)=f(n-1)+(f-2)。
    分析到这里,应该都能看出这就是我们熟悉的斐波那契数列。

  5. 题目2:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级......它也可以跳上n级。此时该青蛙跳上一个n级的台阶总共有多少种跳法?

分析:用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙一次性跳上n阶台阶的跳法数1(n阶跳),设定Fib(0) = 1;
当n = 1 时, 只有一种跳法,即1阶跳:Fib(1) = 1;
当n = 2 时, 有两种跳的方式,一阶跳和二阶跳:Fib(2) = Fib(1) + Fib(0) = 2;
当n = 3 时,有三种跳的方式,第一次跳出一阶后,后面还有Fib(3-1)中跳法; 第一次跳出二阶后,后面还有Fib(3-2)中跳法;第一次跳出三阶后,后面还有Fib(3-3)中跳法 Fib(3) = Fib(2) + Fib(1)+Fib(0)=4;
当n = n 时,共有n种跳的方式,第一次跳出一阶后,后面还有Fib(n-1)中跳法; 第一次跳出二阶后,后面还有Fib(n-2)中跳法..........................第一次跳出n阶后,后面还有 Fib(n-n)中跳法.
Fib(n) = Fib(n-1)+Fib(n-2)+Fib(n-3)+..........+Fib(n-n)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-1) 又因为Fib(n-1)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-2) 两式相减得:Fib(n)-Fib(n-1)=Fib(n-1) =====》 Fib(n) = 2*Fib(n-1) n >= 2 递归等式如下:


Paste_Image.png
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [TOC] StringBuffer类 StringBuffer类概述及其构造方法 StringBuffer类概述...
    lutianfei阅读 490评论 0 1
  • Java相关 1.静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?...
    李成新阅读 223评论 0 0
  • 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱。只要能够搞明白这个系列的绝大多数题目,在面试...
    独念白阅读 351评论 0 3
  • 整理了一些相关面试题,留作查阅之用。 1、面向对象特征:继承 封装 多态 2、方法重载:方法名要一样,但是参数类型...
    dreamkong阅读 2,095评论 0 10
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 960评论 0 2