自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 AdapterView及子类

AdapterView是一组重要的组件,AdapterView本身是一个抽象基类,它派生的子类在用法上十分相似,只是显示界面有一定的区别,因此我这边将它们归为一类哦,针对它们的共性集中讲解,并突出介绍它们的区别。 AdapterView具有如下特征。AdapterView继承了ViewGroup,它的本质是容器。AdapterView可以包括多个“列表项”,并将多个“列表项”以合适的形式显示出

2016-10-28 21:36:51 866

原创 Fragment详解

Fragment是Android 3.0引入的心API,Fragment代表了Activity的子模块,因此可以吧Fragment理解为Activity片段(Fragment本身就是片段的意思)。Fragment拥有自己的生命周期,也可以接受它自己的输入事件。一、Fragment概述及其设计初衷Fragment必须被“嵌入”Activity中使用,虽然Fragment也拥有自己的生命周期,但Frag

2016-10-28 20:09:59 587

转载 Android中marigin和padding的区别

图解margin、padding、border属性 W3C组织建议把所有网页上的对象都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对象包括段落、列表、标题、图片及层。盒模型主要定义四个区域:内容(content)、内边距(padding)、边框(border)和外边距(margin)。对于初学者,经常会搞不清margin,background-color、backgrou

2016-10-16 14:18:01 1262

原创 Android中layout_gravity和gravity的区别

LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity 区别在于:android:gravity属性是对改view中内容的限定,比如button上面的text,你可以设置改text相对view的靠左,靠右等位置。android:layout_gravity是用来设置改view相对父view的位置,比如button在linear

2016-10-16 12:13:54 482

原创 Android存储之SharePreferences

有的时候,应用程序有少量的数据需要保存,而且这些数据的格式比较简单,都是普通的字符串、标量类型的值等,比如应用程序的各种配置信息(如是否打开音效、是否使用振动效果等)、小游戏的玩家积分(如扫雷英雄榜的)等。对于这种数据,Android使用SharePreference进行保存。一、SharedPreferences与Editor简介SharedPreference**保存的数据主要是类似于配置信息格

2016-10-16 12:12:48 651

转载 Android View树的绘制流程

本文主要讲解一个视图View或者一个ViewGroup对象是如何添加至应用程序窗口中的。下文提到的窗口可泛指women能看到的界面,包括一个Activity程序呈现的界面(我们可以将之理解为应用程序窗口),一个Dialog,一个Toast,一个Menu菜单等。首先对相关类的作用进行一下简单介绍:Window类 位于/framework/base/core/java/android/view/Wind

2016-09-17 21:53:54 407

原创 线程同步:synchronized和Lock

多线程编程是有趣的事情,它很容易突然出现“错误情况”,这是由系统的线程调度具有一定的随机性造成的,不过即使程序偶然出现问题,那也是由于编程不当引起的。当使用多个线程来访问同一个数据时,很容易“偶然”出现线程安全问题。一、线程安全问题关于线程安全问题,有一个很经典的问题——银行取钱的问题。银行取钱的流程基本上可以分为如下几个步骤。①用户输入账户、密码,系统判别用户的账户、密码是否匹配 ②用户输入取款

2016-09-16 22:18:27 446

原创 Java:控制线程

Thread提供一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程的执行。一、join线程Thread提供了让一个线程等待另一个线程完成的方法——join()方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,知道被join()方法加入join线程执行完为止。 join()方法通常由使用线程的程序调用,以将问题划分为许多小问题,每个小问题分配一个线程。当所有的小

2016-09-16 01:11:36 1092

原创 Java线程的生命周期

当线程被创建并启动以后,他既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New),就绪(Runnable)、运行(Running)、阻塞(Block)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直占用CPU独自运行,所以CPU需要在多个线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。一、新建和就绪状态当程序使用new关键字创建了一个线

2016-09-15 23:46:55 462

原创 Java线程的创建和启动

Java使用Thread类代表线程,所有线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。Java使用线程执行体来代表这段程序流。一、继承Thread类创建线程类通过继承Thread类来创建并启动多线程的步骤如下。 ①定义Thread类的子类,并重写改类的run()方法,该run()方法体就代表了线程需要完成的任务,因此把

2016-09-15 17:30:09 428

原创 线程概述

一、线程和紧凑几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程(Process)。当一个程序进入内存运行时,即便成一个进程,进程是处于运行的程序,并且具有一定的独立概念,进程是系统进行资源分配和调用的一个独立单位。一般而言,进程包含如下三个特征。 ①独立性:进程是系统中独立存在的实体。它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,

2016-09-15 17:01:38 569

原创 操作集合的工具类:Collections

Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。一、排序操作Collections同一个了如下常用的类方法用于对List集合元素进行排序。void reverse(List list):反转List集合中元素次序voi

2016-09-14 10:21:11 538

原创 HashSet和HashMap的性能选项

对于HashSet及其子类而言,它们采用hash算法来决定集合中元素的存储位置,并通过hash算法来控制集合的大小; 对于HashMap、Hashtable及其子类而言,它们采用hash算法来觉得Map中key的存储,并通过hash算法来增加key集合的大小。hash表里可以存储元素的位置被称为“桶(bucket)”,在通常情况下,单个“桶”里存储一个元素时,此时拥有最好的性能:hash算法可以根

2016-09-14 10:10:03 5706 1

原创 Java 8增强的Map集合

Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map的key,另外一组值用于保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value。从Map中取出数

2016-09-13 09:56:02 778

原创 网易0912笔试题 暗黑字符串

题目:一个只包含’A’、’B’、’C’的字符串,如果存在一段长度为3的连续子串中,恰好有’A’、’B’、’C’各有一个,那么这个字符串就是纯净字符串,否则这个字符串是暗黑的。 例如:BAACAACCBAAA这个字符串就是暗黑的。例如: BAACAACCBAAA这个字符串就是纯净的,因为其连续子串中包含了’C’、’B’、’A’各一个。你的任务就是计算出长度为n的字符串(包含’A’、’B’、’C’)

2016-09-12 18:05:03 2523 1

原创 List集合

List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加顺序设置元素的索引。一、Java 8改进的List接口和ListIterator接口List作为Collection接口的子接口,当然可以使用Collection接口里的全部方法。 而且由于List是有序集合,因此List集

2016-09-10 20:53:45 836

转载 android6.0以后动态获取权限

原文: http://www.2cto.com/kf/201512/455888.html http://blog.csdn.net/yangqingqo/article/details/48371123 http://inthecheesefactory.com/blog/things-you-need-to-know-about-Android-m-permission-developer

2016-09-03 11:22:17 2471

原创 数据结构:图

图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

2016-08-25 01:40:40 852

原创 java.lang.SecurityException: Permission Denial:错误解决办法

在SDK23也就是Android6.0.1里编写调用系统通讯录读写权限的程序,在AndroidManifest.xml中,已经配置了<uses-permission android:name="android.permission.READ_CONTACTS"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/>但

2016-08-23 22:25:01 24069 6

原创 数据结构:树

一、数的定义现实生活中,有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构——“树”,考虑到它的各种特性,来解决在编程中碰到的相关问题。树(Tree)是n(n≥0)个结点的有限集。n = 0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n ≥ 1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm,其中每一个集合本身又是一棵

2016-08-15 22:22:20 1387

原创 数据结构:串

一、串的定义串(string)是由零个或多个字符组成的有限序列,又名叫字符串。一般记为s=”a1a2……an”(n≥0),其中s是字符串的名称,用双引号括起来的字符序列是串的值,引号不属于串的内容。ai(1 ≤ i ≤ n)可以是字母、数字或其他字符,i就是该字符在串中位置。串中的字符数目n称为串的长度,定义中谈到“有限”是指长度n是一个有限的数值。两个字符的串称为空串(null string),它

2016-08-15 01:56:53 1855

原创 Java中的Set集合

Set集合,类似于一个罐子,程序依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的添加顺序。Set集合与Collection基本相同,没有提供额外的方法。实际上Set就是Collection,只是行为略有不同(Set不允许包含重复元素)。Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。上面

2016-08-13 01:47:51 1080

原创 队列

队列(queue)是只允许在一段进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。 假设队列是q = (a1,a2,……,an),那么a1就是队头元素,an是队尾元素。这样我们删除时,总是从a1开始,而插入时,列在最后。这样也比较符合我们通常生活中的习惯,排在第一个的优先出列

2016-08-11 15:14:19 619

原创 Java集合类

Java集合类是一种特别有用的工具类,可用于存储数量不等的对象,并可实现常用的数据结构,如栈、队列等。除此之外,Java集合还可用于保存具有映射关系的关联数组。Java集合大致可以分为Set、List、Map和Queue四种体系。 其中Set代表无序、不可重复的集合; List 代表有序、可重复的集合; Map 代表具有映射关系的集合; Java 5又增加了Queue体系集合,代表一种队列集

2016-08-10 17:30:43 660

原创 Java 8的日期、时间类

Java原本提供了Data和Calendar用于处理日期、时间的类,包括创建日期、时间对象,获取系统当前日期、时间等操作。但Date不仅无法实现国际化,而且它对不同属性也使用了前后矛盾的偏移量,比如月份与小时都是从0开始的,月份中的天则是从1开始的,年又是从1900开始的,而java.util.Calendar则显得过于复杂。从下面介绍可以看到Java对日期、时间处理不足。Java洗浴了Joda-T

2016-08-10 01:29:45 9863

原创 Java 7的ThreadLocalRandom与Random

Random类专门用于生成一个伪随机数,它由两个构造器:一个构造器使用默认的种子(以当前时间作为种子),另一个构造器需要程序员显式传入一个long型整数的种子。ThreadLocalRandom类是Java 7新增的一个类,它是Random的增强版。在并发访问的环境下,使用ThreadLocalRandom来代替Random可以减少多线程资源竞争,最终保证系统具有更好的线程安全性。ThreadLoc

2016-08-08 23:32:30 1354

原创 String、StringBuffer和StringBuilder类比较

字符串就是一连串字符序列,Java提供了String和StringBuffer两个类来封装字符串,并提供一系列方法来操作字符串对象。String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符串是不可改变的,知道这个对象被销毁。StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,StringBuffer提供的append()

2016-08-08 14:54:09 650

原创 Object类

Object类是所有类、数组、枚举类父类,也就是说,Java允许把任何类型的对象赋给Object类型变量。当定义一个类时没有使用extends关键字为它显式指定父类,则该类默认继承Object父类。因为所有Java类都是Object类的子类,所以任何Java对象都可以调用Object类的方法。Object类提供了如下几个常用方法。 ①boolean equals(Object obj):判断指定对

2016-08-07 15:19:09 401

原创 Java中系统相关的类:System类、Runtime类

Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特点功能。Java提供了System类和Runtime类来与程序的运行平台进行交互。一、System类System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。System类提供了代表标准输入、标准输出

2016-08-07 12:49:49 4489

原创 Scanner获取键盘输入

java.util.Scanner是JDK1.5的新特性,主要功能是简化文本扫描。使用Scanner类可以很方便地获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器。它可以从文件、输入流、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可以接受文件、输入流、字符串作为数据源,用于从文件、输出流、字符串中解析数据。Scanner主要提供了两个方法来扫描

2016-08-07 11:36:56 2152

原创

一、栈的定义1.栈的定义栈(stack)是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说在线性表的表尾进行插入和删

2016-08-06 21:36:35 648

原创 内部类

大部分时候,类被定义成一个独立的程序单元。在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类(有的地方也叫嵌套类),包含内部类的类也被称为外部类(有的地方也叫宿主类)。Java从JDK1.1开始引入内部类,内部类主要有如下作用。 ①内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。假设需要创建Cow类,Cow类需要组合一个

2016-08-04 17:15:30 391

原创 线性表的基本概念

一、线性表的定义线性表:零个或多个数据元素的有限序列。几个关键的地方。 首先它是一个序列。也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都只有一个前驱和后继。然后,线性表强调是有限的。事实上,在计算机中处理的对象都是有限的,那种无限的数列,只存在于数学的概念中。如果用数学语言来定义。可如下: 若将线性表记为(a1,…,ai-1,ai,ai+1,

2016-08-04 09:41:02 21303 2

原创 Java接口详解

抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更加特殊的”抽象类“——接口(interface),接口里包普通方法,接口里的所有方法都是抽象方法。Java 8对接口进行了改进,允许在接口中定义默认方法,默认方法可以提供方法实现。一、接口的概念 我们经常在生活中听到接口这个词,比如PCI接口、AGP接口,因此很多人认为接口相当于主板上一个插槽,这其实是一种错误的认识。

2016-08-03 12:40:22 9135

原创 抽象类

当编写一个类时,常常会为该类定义一些方法,这些方法用于描述该类的行为方式,那么这些方法都有具体的方法体。但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法知道这些子类如何实现这些方法。例如定义了一个Shape类,这个类应该提供一个计算周长的方法calPerimeter(),但不同Shape子类对周长的计算方法时不一样的,即Shape类无法准确地知道其子类计算周长的方法。既然Shape类

2016-08-02 16:33:35 1605 1

原创 final修饰符

final关键字用于修饰类、变量和方法,final关键字有点类似于C#里的sealed关键字,用于表示它修饰的类、方法和变量不可改变。final修饰变量时,表示一旦获得了初始值就不可被改变,final既可以修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。有的书上介绍说final修饰的变量不能被赋值,这种说法是错误的!严格的说法是,final修饰的变量不可被改变,一旦获得了初始值,该f

2016-08-01 19:21:22 991

原创 Java基础——类成员

static关键字修饰的成员就是类成员,前面已经介绍的类成员有类变量、类方法、静态初始化块三个成分,static关键字不能修饰构造器。static修饰的类成员属于整个类,不属于单个实例。一、理解类成员在Java类里只能包含成员变量、方法、构造器、初始化块、内部类(包括接口、枚举)5种成员,目前已经介绍了前面4种,其中static可以修饰成员变量、方法、初始化块、内部类(包括接口、枚举),以stati

2016-07-30 19:23:43 816

原创 算法的时间复杂度

一、 时间复杂度定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。 算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。这样用大写O()来体现算法时间复

2016-07-30 15:43:22 1063

原创 算法的特性

算法有5个基本特性:输入、输出、有穷性和可行性一、输入输出输入和输出比较容易理解,算法具有零个或多个输入。尽管对于绝大多数算法来说,输入参数都是必要的,但对于个别情况,如打印“hello world”这样的代码,不需要任何输入参数,因此算法的输入可以是零个。算法至少有一个或多个输出,算法是一定要有输出的,输出形式可以是打印输出,也可以是返回一个或多个值等。二、有穷性有穷性:指算法在执行有限的步骤之后

2016-07-30 13:14:22 1034

原创 Java基础——处理对象

Java对象都是Object类的实例,都可直接调用该类中定义的方法,这些方法提供了处理Java对象的通用方法。一、打印对象和toString方法先看下面程序。class Person{ private String name; public Person(String name) { this.name = name; }}public class

2016-07-30 11:46:10 383

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除