分类: [JAVA]

Java异常处理

异常指不期而至的各种状况,如:文件找不到、网络连接失败、除0操作、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。 Java 异常的概念 Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个异常类来表示,不同类型的异常对应不同的子类异常(目前我们所说的异常包括错误概念),定义异常处理的规范,在JDK1.4版本以后增加了异常链机制,从而便于跟踪异常。 Java异常是一个描述在代码段中发生异常的对象,当发生异常情况时,一个代表该异常的对象被创建并且在导致 ......

Java中equals和==的区别

平时在学Android和Java语言的时候,总是碰到“equals”和“==”这两个字符,老感觉差不多;其实还是有一些区别的,今天干脆把它们彻底弄清楚。 一、java当中的数据类型和“==”的含义: 基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值。 引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。 注:对于第二种类型,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为 ......

剑指offer——机器人的运动范围

题目: 地上有个 m 行 n 列的方格。一个机器人从坐标(0,0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 举例分析 例如,当 k 为 18 时,机器人能够进入方格(35,37),因为 3+5+3+7=18 但它不能进入方格(35,38),因为 3+5+3+8=19 请问该机器人能够达到多少格子? 解题思路 和前面的矩阵中的路径类似,这个方格也可以看出一个 m*n 的矩阵。同样在这个矩阵中,除边界上的格子之外其他格子都有四个相邻的格子。 机器人从坐标(0,0)开始移动。当它准备进入坐标为(i,j)的格 ......

剑指offer——矩阵中的路径

题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 解题思路   这是一个可以用回朔法解决的 ......

剑指offer——删除链表的节点

/* * 给定单向链表的头指针和一个结点指针,定义一个函数在0(1)时间删除该结点 * * 【抖机灵】 * 正常删除链表节点都得给个头指针和要删除的结点,然后从头开始遍历寻找 * 但是要求时间复杂度是1,下面抖个机灵: * 我们可以直接复制这个结点的下一个结点,然后再将这个结点的下一个结点删除。over * 【注意】 * – 要删除的结点是尾结点 * – 没办法,NULL为系统中的特定的那块区域!!并无法复制,所以只能从头遍历,得到该结点的前序结点,删除。 * – 如果链表只有一个结点, ......

java位运算符总结

/* * Java提供的位运算符有:左移( > ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ) * 除了位非( ~ )是一元操作符外,其它的都是二元操作符。 */ 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465public class 位运算整理{     public static void main(String[] args) {         /* 左移( << )          * 运行结果是2 ......

剑指offer——打印从1到最大的n位数

题目: 输入数字n,按顺序打印出从1最大的n位十进制数。 比如输入3,则打印出1、2、3、4、5、6…… 一直到最大的3位数即999。 /* * 【注意】 * 大数问题:–>用数组 * 法1: * 模拟大数相加,从0开始,每次加1, * 直到arr的最高位(倒数第n+1位)有进位时,即最大的n位数已经打印完毕。 * * 法2: * 递归 * 打印1 ~ n位的所有十进制数,其实就是从第1位开始设置0~9的全排列,直到递归将最后一个位置设置完毕,开始打印。 */ 12345678910111213141516171819202122232425262728293031 ......

剑指offer——数值的n次方

题目: 实现函数double Power(double base, int exponent),求base的exponent次方。 不得使用库函数,同时不需要考虑大数问题。 /* * 实现函数double Power(double base, int exponent),求base的exponent次方。 * 不得使用库函数,同时不需要考虑大数问题。 * * 【注意】 * – 底数(base)是0且指数(exponent)是负数时的,throw new RuntimeException(“参数异常”) * – 0的0次方,无意义.任何数的0次方都 return 1; * – 任何数的1次方 都等于他本身,return base; * – 判断两个小数相等 ......

剑指offer——剪绳子

题目: 给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少? 例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061public class 剪绳子 {     public static int jsz2(int length) {         if(length < 2)  ......

剑指offer——旋转数组的最小数字

【题目】 把一个数组最开始的若干个元素搬到数组的末尾, 我们称之数组的旋转。 输入一个递增排序的数组的一个旋转, 输出旋转数组的最小元素。 例如数组{ 3, 4, 5, 1, 2} 为{ l, 2, 3, 4, 5}的一个旋转,该数组的最小值为 1。 /** * * 暴力遍历寻找 * *二分查找方法: *1.两个指针指向数组第一个和最后一个元素(第一个元素应该大于等于最后一个元素) *2.找数组中间的元素,如果中间元素大于等于第一个指针指向的元素,则中间元素位于前面的递增序列,那么最小值应该位于中间元素后面,移动left *3.如果中间元素小于等于第二个指 ......