- 博客(42)
- 收藏
- 关注
原创 第一行代码—序言
1 android系统架构android大致可以分为四层架构:Linux内核层,系统运行库层、应用框架层和应用层Linux内核层android系统是基于Linux内核,这一层为android设备的各种硬件提供了底层驱动。系统运行库层通过一些C/C++库来为android提供了主要的特性支持。还有android运行时库,主要提供一些库,允许开发者使用Java语言来编写andro...
2018-09-30 18:58:16 666
原创 thinking-in-java-version2
1 导论面向对象的语言大概有一下五个特性万物皆为对象。程序是对象的集合,他们通过发送消息来告知彼此所要做的事。每个对象都有自己的由其他对象所构成的存储。每个对象都有其类型。某一特定类型的所有对象都可以接受同样的消息。接口定义了对某一特定对象所能发出的请求。每一个对象都有一个接口,都提供服务。类创建者的目标是构建类,这种类只向客户端程序员暴露必须的部分而隐藏其他部分...
2018-09-29 09:39:00 450
原创 thinking_in_java_version_1
第1章 对象导论1.1 抽象过程所有编程语言都提供抽象机制。可以认为,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。所谓类型是指“所抽象得是什么”。面向对象方式将问题空间中的元素及其在空间中的表称为“对象”。这种思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。面向对象的语言大概有一下五个特性:万物皆为对象。可以抽取待求解问题的任何概念化构件(狗,建筑等),将...
2018-09-29 09:07:03 1441
原创 Java编程思想——持有对象
11 持有对象如果一个程序只包含固定数量的且生命周期都是已知的对象,那么这是一个非常简单的程序。 通常程序都是根据运行时才知道的某些条件去创建新对象,在此之前,不会知道所需对象的数量,甚至不知道确切的类型,这时候就不能依靠创建命名的引用来持有每一个对象,因为你不知道有多少个引用。java有多种方式保存对象,例如数组。但是数组具有固定的尺寸,在更一般的情况下,写程序的时候并不知道将要需要多少个对象,
2017-11-18 11:45:56 532
原创 Java编程思想——内部类
10 内部类可以将一个类的定义放在另一个类的定义内部,这就是内部类。内部类是一种非常有用的特性,它允许你把一些逻辑相关的类组织在一起,并控制位于内部类的可视性。内部类与组合是两种完全不同的概念。内部类看起来就像是一种代码隐藏机制:将类置于其他类的内部。但是内部类远不止于此,它了解外围类,并能与之通信;而且你用内部类写出的代码更加清晰优雅。10.1 创建内部类创建内部类的方式就是把类的定义置于外围类里
2017-11-17 15:53:09 585
原创 Java编程思想——接口
9 接口接口和内部类为我们提供了一种将接口和实现分离的更加结构化的方法。在学习接口之前,必须学习抽象类,它是普通的类和接口之间的中庸之道。9.1 抽象类和抽象方法随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类,或者抽象基类。用abstract关键字来修饰一个
2017-11-09 19:06:54 334
原创 Java编程思想——多态
8 多态在面向对象设计语言中,多态是继封装,继承之后的第三种基本特征。多态通过分离做什么和怎么做,从另一个角度将接口和实现分离。8.1 再论向上转型已知对象既可以作为它自己本身的类型使用,也可以作为它的基本类型使用。这种把某个对象的引用视为其基类型的引用的做法被称作向上转型。 例如前述的基类Instrument和导出类Wind。如果在Music类中有一个方法表示演奏,假设它的引用是Instrume
2017-10-31 15:09:44 569
原创 Java编程思想——复用类
7 复用类复用代码是java众多引人注目的功能之一。关于达到这个目的的方法有两种:一是只需在新的类中产生现有类的对象。由于新的类是现有类的对象所组成,这种方法称之为组合;第二种方法是按照现有类的类型来创建新类。无需改变现有类的形式,采用现有类的形式并在其中添加新代码。这种方式称之为继承。组合和继承类似,都是利用现有类型生成新类型。7.1 组合语法假设你需要某个对象,它要具有多个string对象,几个
2017-10-31 09:18:01 428
原创 Java编程思想——访问权限控制
6. 访问权限控制如何把变动的事物与不变动的事物区分开来是面向对象设计中需要考虑的一个基本问题。在修改和完善代码的压力下,如何保证某些代码是不可变动,哪些是有权限可以变动的。为了解决这一问题,java提供了访问权限修饰词,供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的,权限等级从大到小依次为:public、protected、包访问权限(默认)、private。6.1 包:库单元包内含
2017-10-26 20:03:03 434
原创 Java编程思想——初始化与清理
5. 初始化与清理面向对象(OOP)与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。 面向对象的三大特征 封装 (Encapsulation) 继承 (Inheritance) 多态 (Pol
2017-10-24 20:58:56 355
原创 Java编程思想——控制执行流程
4.控制执行流程java使用了c所有的控制流程语句,涉及到的关键字有:if-else、while、do-while、for、return、break以及选择语句break.java并不支持goto语句。4.1true和false条件语句都利用条件表达式的真或假来决定执行路径。前面介绍的关系操作符都可以用来构造条件表达式。4.2if-elseif-else是最基本的控制程序流程的形式,其中else是可
2017-10-24 19:23:03 252
原创 Java编程思想——操作符
3操作符Java其实是建立在C++的基础之上的,很多语法之类都很类似。关于操作符也基本类似。3.1更简单的打印语句java的打印语句示例:System.out.println("a lot of type");Java SE5中新增了静态导入(static import)这一概念,创建一个小类库来简化打印语句的编写。这个在之后详细讨论,一般打印语句不多的时候还是使用上述的例句形式。关于简化的打印语句
2017-10-22 19:56:52 328
原创 Java编程思想——一切都是对象
2一切都是对象具体了解java之前了解一些基本知识: 常用的DOS命令 dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 cd : 进入指定目录 cd.. : 退回到上一级目录 cd: 退回到根目录 del : 删除文件 exit : 退出 dos 命令行 第三代高级语言: C、Pascal、Fort
2017-10-20 16:26:04 330
原创 Java编程思想——对象导论
1对象导论1.1抽象过程所有编程语言都提供抽象机制。可以认为,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。所谓类型是指“所抽象得是什么”。面向对象方式将问题空间中的元素及其在空间中的表称为“对象”。面向对象的语言大概有一下五个特性: 1)万物皆为对象。可以抽取待求解问题的任何概念化构件(狗,建筑等),将其表示为程序中的对象。 2)程序是对象的集合,他们通过发送消息来告知彼此所要做的事
2017-10-19 19:37:01 401
原创 链表算法——基础部分
创建一个单链表,添加节点,对链表进行遍历import org.junit.Test;/******************************************** * 创建链表,添加节点,遍历链表 * * ******************************************/public class LinkList{
2017-10-14 11:08:50 442
原创 字符串算法——单一数(Single Number III)
问题: ven an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.For example:Given nums = [
2017-10-14 10:42:53 486
原创 字符串算法——查找二维数组中元素(Search a 2D Matrix II)
问题: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted in ascending from left to right. Integers in ea
2017-10-14 10:40:03 760
原创 字符串算法——查找数组多数元素(Majority Element II)
问题: Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space. 思路一:与前述的majority element类似,采用直接遍历计算元素出现的次数,如果超过
2017-10-14 10:33:56 346
原创 字符串算法——查找数组第K个最大值( Kth Largest Element in an Array)
问题: Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.For example, Given [3,2,1,5,6,4] and k = 2, return 5.
2017-10-14 09:47:21 378
原创 字符串算法——查找数组中多数元素(Majority Element)
问题: Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element al
2017-10-14 09:22:58 1030
原创 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
问题: Follow up for “Find Minimum in Rotated Sorted Array”: What if duplicates are allowed?Would this affect the run-time complexity? How and why? Suppose an array sorted in ascending order is rotated
2017-10-14 09:21:14 317
原创 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
问题: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Find the minimum element.You may assume no duplicate
2017-10-14 09:01:48 212
原创 字符串算法——反转字符串单词表(Reverse Words in a String)
问题: Given an input string, reverse the string word by word.For example, Given s = “the sky is blue”, return “blue is sky the”.Update (2015-02-12): For C programmers: Try to solve it in-place in O(1
2017-10-12 15:18:03 331
原创 字符串算法——单一数(Single Number II)
问题: Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one.Note: Your algorithm should have a linear runtime complexity. Could
2017-10-12 15:07:00 279
原创 字符串算法——单一数(Single Number)
问题: Given an array of integers, every element appears twice except for one. Find that single one.Note: Your algorithm should have a linear runtime complexity. Could you implement it without using ext
2017-10-12 14:59:15 376
原创 字符串算法——旋转数组中查找目标值(有重复元素)( Search in Rotated Sorted Array II)
问题: Follow up for “Search in Rotated Sorted Array”: What if duplicates are allowed?Would this affect the run-time complexity? How and why? Suppose an array sorted in ascending order is rotated at so
2017-10-12 10:56:48 492
原创 字符串算法——二维有序数组中查找目标值(Search a 2D Matrix)
问题: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted from left to right. The first integer of each r
2017-10-12 10:42:53 447
原创 字符串算法——有重复字符的数组或字符串全排列(Permutations II)
问题: Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example, [1,1,2] have the following unique permutations:[ [1,1,2], [1,2,1], [2,1,1]
2017-10-12 10:26:54 568
原创 字符串算法——数组或字符串全排列(Permutations)
问题: Given a collection of distinct numbers, return all possible permutations.For example, [1,2,3] have the following permutations:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]这
2017-10-12 10:00:46 265
原创 字符串算法——旋转数组中查找目标值(Search in Rotated Sorted Array)
问题: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a target value to search. If found in t
2017-10-12 09:46:38 708
原创 字符串算法——字符串匹配
问题:给定一个字符串和一个子串,找到子串在字符串中出现的第一个索引位置,如果没有则返回-1. 解决思路:如果考虑到时间复杂度,则可以采用KMP算法,时间复杂度为O(m+n)O(m+n),暂不详细介绍其原理过程。class Solution { public int strStr(String haystack, String needle) { //KMP算法
2017-10-12 09:18:00 195
原创 字符串算法——String转换为Integer
问题:给定一个String,将其转换为Integer。 注: 1. 丢弃掉字符串前面的所有空格字符,直到遇到第一个非空格字符 2. 遇到第一个字符元素初始化整数的符号 3. 字符串可以包含其他字符,不影响字符的转换,遇到非数字字符则停止转换输出整数 4. 如果转化的整数超出整数的范围,则输出整数的最大值或者最小值class
2017-10-12 09:07:57 1726
原创 字符串算法——两个有序数组的中位数
问题:有两个有序的数组nums1和nums2,长度分别为m和n,找到两个有序数组的中位数,运行时间复杂度为O(log(m+n))O(log(m+n)) 例如: nums1 = [1,3],nums2 = [2],中位数为2.0 nums1 = [1,2],nums2 = [3,4],中位数为2.5 解决思路:如果没有要求时间复杂度,可以对两个数组的每个元素依次比较排序或者使用归并排序,这里要
2017-10-12 08:25:06 377
原创 字符串算法——最长回文子串
问题:给定一个字符串,找出最长的回文子串 例如: “babad”的最长回文子串为”bab”,当然”aba”也是可以的 解决思路:这种问题要考虑到回文子串是奇数还是偶数情况,分为两种可能。这里可以采用从内向外扩散的方法来解决该问题。 例如:回文子串为奇数,从第一个字符元素开始扩散。第一个子串为”b”,然后第二个字符元素为“a”,向左右扩散一位为”bab”,还是回文子串,再向左右扩散不满足回文条
2017-10-11 22:43:05 246
原创 字符串算法——最长子串(无重复元素)
问题:给定一个字符串,找出最长的无重复元素的子串 例如: “bbbbbb”的子串为”b” “abcabccd”的子串为”abc”
2017-10-11 22:29:45 703
原创 Java排序算法——快速排序
快速排序 基本思想:任取待定排序序列中的某个元素作为标准(一般取第一个元素),通过一次划分,将待排元素分为左右两个子序列,左子序列中元素小于基准元素,右子序列大于或等于基准元素,然后对两个子序列继续进行划分,直至每一个序列只有一个元素为止。 时间效率:O(log2(n+1))O(log2(n+1))O(log_2(n+1)) 空间效率:O(nlog2n)O(nlog2n)O(nlog_2n)...
2017-10-11 20:32:14 215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人