![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
弓长张_木子李
这个作者很懒,什么都没留下…
展开
-
数组-折半查找
//折半查找public int halfFind(int[] arr,int key){ int min = 0; //数组第一个下标 int max = arr.length -1; //数组最大下标 int mid = ( min + max ) / 2; //数组中间下标 //如果中间值不等于要找的值,继续折半 while(arr[mid] != key原创 2018-01-31 19:26:39 · 365 阅读 · 0 评论 -
位运算
位运算针对的是二进制,所以需要将进行位运算的数现转成在内存中二进制的表示形式 左移或右移例如: 3 内存中二进制(32位): 0000 0000 0000 0000 0000 0000 0000 0011左移后的结果为(32位): 0000 0000 0000 0000 0000 0000 0000 1100原理就是: 左移就是从左边开始去掉几位,就在原创 2018-01-30 11:40:22 · 121 阅读 · 0 评论 -
if条件语句
一、单个if语句if ( 条件 ){ //符合条件要做的事}if( 条件 ) //符合条件要做的事ps:如果if中只有一条语句,可以将{}去掉,为了提高可阅读性,可以缩进两个空格 二、带else的if语句if ( 条件 ){ //逻辑1}else{ //逻辑2}ps: if else使用三元运算符简写形式: 变量 = (条原创 2018-01-30 11:40:27 · 1860 阅读 · 0 评论 -
switch选择结构
switch( 表达式 )//表达式可以使用byte,short,int,char{ case 值1: 逻辑语句; break;//跳出switch语句 case 值2: 逻辑语句; break; default: // 所有条件都不符合使用default, 跟default所在位置无关 逻辑语句; break;//最后一个可以省原创 2018-01-30 11:40:31 · 1371 阅读 · 0 评论 -
循环结构
一、while 语句格式初始化条件表达式;while( 条件表达式 )//当条件为真时,一直循环执行里面的语句,死循环,所以一般需要对条件进行控制{ //执行语句;}ps:doc下停止死循环使用 ctrl + c二、do whle 语句格式do{ //执行语句;}while(条件语句);//do while 的while后有英文的分号,表示do whi原创 2018-01-30 11:40:35 · 124 阅读 · 0 评论 -
流程控制语句
一、break语句 应用范围:选择结构和循环结构(多个for循环嵌套,跳出离break最近的一个for循环)二、continue语句 应用范围:只能用于循环结构(只作用于当前循环。结束本次循环,继续下次循环) for( int x = 0; x ){ if( x % 2 == 1) continue;//如果符合条件不执行下面的语原创 2018-01-30 11:40:44 · 402 阅读 · 0 评论 -
函数重载(overload)
重载的定义及特点 在同一个类中,允许存在一个以上的同名函数, 只要他们的参数个数或者参数类型不同(不仅指两个重载方法的参数类型不同,还指相同参数拥有不同的参数类型顺序)就构成重载。重载只和参数列表有关系,跟返回值类型无关,即返回值类型不能作为重载的条件。public void test(int num1, double num2){ System.out.println("原创 2018-01-30 11:40:59 · 251 阅读 · 0 评论 -
数组
一、数组定义 同一中类型数据的集合,即数组相当于一个容器,用来存放相同类型的数据。二、数组特点 数组中的数据都有一个唯一的编号,下标从0开始。三、数组的格式 元素类型[] 数组名 = new 元素类型[数组长度] eg: int[] a = new int[10]; //a是一个能存放int类型数据的数组类型,能存储10个元素,默认为0四、内存分配原创 2018-01-30 11:41:06 · 128 阅读 · 0 评论 -
多态特点
如果父类和子类中存在static方法或者变量, 那么父类对象指向子类引用的时候,调用的静态方法或变量都是父类的static方法或变量,与子类引用无关。因为static修饰的方法或变量不需要使用对象,只用类名就可以调用, 非static的方法需要对象名才能调用,所以父类对象指向子类引用的时候,调用非静态的子类方法时,如果子类没有重写继承的父类的方法,那么调用父类方法, 如果子类重写了父类的方法,那么...原创 2018-02-28 10:04:18 · 324 阅读 · 0 评论 -
异常--finally关键字
finally定义: finally{}代码块中的代码是一定会执行的,一般用来关闭资源或者一些必须执行的代码,如数据库连接的关闭原创 2018-02-28 10:04:11 · 116 阅读 · 0 评论 -
Object类(根类)
Object中的方法是所有类都有的方法,每个类默认继承了Object类。 boolean equals(Object obj) : Object中默认是比较地址,可以重写equals(Object obj)方法,比较内容。 String toString() : 返回该对象的字符串表示,对象.toString(); ...原创 2018-02-28 10:04:01 · 401 阅读 · 0 评论 -
内部类
在一个类中,除了定义正常的变量和方法外,在类中有定义了一个类,那个类中的类就是内部类。 内部类可以被private,static修饰,当它在外部类的成员位置上。当内部类中定义了静态成员,那么这个内部类必须是static的。当外部类的静态方法访问内部类时, 内部类也必须是static的。 内部类访问规则: 内部类可以直接访问其所在的外部类的变量和方法。因为内部类持有一个外部类的引用 -...原创 2018-02-28 10:03:49 · 216 阅读 · 0 评论 -
匿名内部类
匿名内部类是内部类的简写格式。定义匿名内部类的前提: 内部类必须是继承一个类或者实现一个接口。 匿名内部类的格式: new 父类或者接口(){ //子类的内容 void method() { //具体实现 }}.method();//.method();之前是创建一个没有子类名的对象,然后调用方法 父类或者接口 name = ...原创 2018-02-28 10:03:42 · 159 阅读 · 0 评论 -
自定义异常
//自定义异常需要继承一个表示异常的父类,因为异常类和异常对象都被抛出,//而只有Throwable体系中特有的。所以只有这个体系中的类和对象才可以被throws和throw操作,//Exception是Throwable的子类class MyException extends Exception{ //自定义异常信息 Exception(String message) ...原创 2018-02-28 10:03:34 · 144 阅读 · 0 评论 -
interface接口
当类中的方法都是抽象方法,接口格式特点:1、接口中可以定义常量和抽象方法。2、接口中成员有固定修饰符: 常量:public static final 可省略 方法:public abstract 可省略3、接口中的成员都是public的。4、子类实现接口需要使用 implements 关键字 因为接口总有抽象方法,所以接口不能创建对象,原创 2018-02-07 13:56:12 · 148 阅读 · 0 评论 -
线程--继承Thread
首先继承Thread类,然后重写Thread类的run()方法。Thread类的子类的对象调用start()方法,然后虚拟机就会调用该线程的run()方法。当程序执行到start()方法时,线程启动,此时有两条执行路径,一条是主方法执行main方法,另一条是线程路径执行线程run()里的代码,两条路径交替执行(交替执行指抢夺cup执行时间,所以每次执行结果都不同)class ThreadDemo ...原创 2018-03-02 14:10:01 · 168 阅读 · 0 评论 -
线程--实现Runnable接口
实现Runnable接口,创建线程步骤:1、定义类,并实现Runnable接口2、重写Runnable接口中的run()方法3、通过Thread类建立线程对象4、将实现了Runnable接口的类作为参数传入Thread类的构造函数5、调用Thread类对象的start()方法,开始调用Runnable子类的run()方法Class SynDemo implemets Runable{ p...原创 2018-03-12 14:47:42 · 4933 阅读 · 0 评论 -
final关键字
final:最终 的意思 1、可以修饰类,函数,变量。 2、被final修饰的类不可以被继承。 3、被final修饰的方法不能被重写。 4、被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,也可以修饰局部变量。原创 2018-02-06 09:16:39 · 86 阅读 · 0 评论 -
abstract关键字
当多个类中出现同一个功能,但是具体的主体功能不同,这时可以进行向上抽取,只抽取功能定义,主体功能由特定类实现。上面这个类使用abstract关键字进行区分 抽象类的特点: 1、抽象方法一定在抽象类中。 2、抽象方法和抽象类都必须被abstract关键字修饰。 3、抽象类不可以使用new创建对象,因为抽象类里的抽象方法没有功能主体,调用没有意义。 4、抽象类中的抽象方原创 2018-02-06 09:15:54 · 160 阅读 · 0 评论 -
二维数组
可以将二维数组理解为数组中的数组, 即一维数组里在存一个一维数组格式1:int[][] arr = new int[2][3]; arr的二维数组中有两个一维数组,每个一维数组的大小是2。 arr[0]表示第一个一维数组,arr[0][0]表示第一个一维数组的第一个下标值。格式2:int[][] arr = new int[2][]; arr原创 2018-01-31 19:26:42 · 211 阅读 · 0 评论 -
进制转换
//十进制转二进制public void toBinary(int num){ StringBuffer buffer = new StringBuffer(); while(num > 0) { buffer.append(num % 2); num = num / 2;原创 2018-01-31 19:26:46 · 177 阅读 · 0 评论 -
面向对象
将功能封装进对象,成为对象的方法,使用对象.对象方法()调用方法面向对象三个特征:封装、多态、继承 类的成员变量和局部变量作用范围:成员变量:作用于整个类中局部变量:作用于函数中、或者语句中 内存中的位置:成员变量:在堆内存中,因为对象的存在,所以才在内存中存在局部变量:从在栈内存中原创 2018-01-31 19:26:52 · 124 阅读 · 0 评论 -
封装
封装:指隐藏对象的属性和实现细节,金对外提供公共的访问方式封装的好处是: 提高重用性,提高安全性,便于使用,可以将变化隔离封装原则: 将不需要对外提供的内容隐藏,把属性都隐藏,提供公共方法(接口)对其访问原创 2018-01-31 19:27:48 · 164 阅读 · 0 评论 -
main主函数
public static void main(String[] args){ //虚拟机调用main函数,需要传个args的参数,传入的是new String[0] System.out.println(args);// 结果是一个数组实体,长度是0}主函数的定义:(主函数也是一个函数) public :代表该函数的访问权限是最大的 static原创 2018-02-01 10:42:52 · 221 阅读 · 0 评论 -
对象创建初始化过程
原创 2018-02-01 10:42:58 · 140 阅读 · 0 评论 -
JVM虚拟机查找类文件的顺序
JVM查找类文件的顺序: 在doc下使用set classpath=xxx, 如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。 如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件。 值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录原创 2018-01-25 09:57:33 · 378 阅读 · 0 评论 -
JRE、JDK概述
JRE(java Runtime Environment java运行环境) 包括java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 如果想要运行一个开发好的Java程序, 计算机中需要安装JRE就行了。JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的, 其中包含原创 2018-01-25 11:30:02 · 217 阅读 · 0 评论 -
static关键字
static用法: 是一个修饰符,用来修饰成员变量和成员函数。被static修饰的变量不在堆内存中,会被单独提取出来,放在方法区(共享区,数据区)每个单独的对象还是能正常访问,被对象所共享。 当成员被静态修饰后,除了可以被对象使用" . "来调用,还可以直接使用类名加" . "的方法调用,类名.静态成员。 static内存特点: 随着内存的加载而加载:原创 2018-01-26 14:27:43 · 117 阅读 · 0 评论 -
类中的 this关键字
this可用于区分局部变量和成员变量,因为构造函数中如果使用 this.成员变量 = 参数值,那么可以在new对象时,将初始化值赋值给成员变量,否则成员变量赋值失败,所以this可以区分成员变量和局部变量class person{ private String name; person(String name) { name = name;//此时原创 2018-01-26 14:27:54 · 173 阅读 · 0 评论 -
构造函数
构造函数特点: 函数名与类名相同、不用定义返回值类型、没有return语句、构造函数可以有多个并以重载的方式存在构造函数的作用: 给new出来的对象进行初始化如果定义的一个类中没有自定义的构造函数,系统会有默认的产生一个无参的构造函数,如果有自定义的构造函数, 系统默认构造函数就不存在了,构造函数只运行一次原创 2018-01-26 14:29:37 · 128 阅读 · 2 评论 -
二进制
三位二进制表示一位八进制(eg:二进制 111 转成八进制:7),四位二进制表示一位十六进制(eg:1111 转成十六进制:F),八位二进制位表示一个字节(字节是最小单位)原创 2018-01-29 14:11:59 · 139 阅读 · 0 评论 -
变量
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间,byte(字节):8个二进制(-128 ~ 127),short:16个二进制(负的2的15次方到正的2的15次方-1),int:32个二进制(负的2的31次方到正的2的31次方-1),float:单精度,32个二进制double:双精度,64个二进制原创 2018-01-29 14:12:39 · 120 阅读 · 0 评论 -
类型转换
自动类型提升 两种不同数据类型的数据进行运算时, 需要首先变成同一数据类型, 转变规则是:向着位数高的类型转换 byte b = 1; //赋值1的时候会自动判断,判断1是不是在b的范围内, 1是常量是固定的,所以可以赋值 b = b +2; // 结果将报错,因为int为32位, byte是8位二进制表示,b+2 中b是个不确定的值, 不能进行自动判断,原创 2018-01-29 14:12:55 · 140 阅读 · 0 评论 -
运算符
system.out.println(-1%5);//-1system.out.println(1%-5);//1看左边正负确定结果int a= 1,b;b = a++;system.out.println(b);//1system.out.println(a);//2a = 1;b = ++a;system.out.println(b);//2system.原创 2018-01-29 14:13:03 · 100 阅读 · 0 评论 -
逻辑运算符
&: 如果两边的表达式有一个为false结果就是false,两边都是true,结果是true&&:与&不同的是,当左边出现false是有区别,&不管左边是真还是假,右边都进行判断, && 当左边是false时,不在进行右边的真假判断,结果直接是false|: 两边有一个为true,结果是true, 两边都是false,结果是false 不管左边是真假,右边都判断||原创 2018-01-29 14:13:10 · 304 阅读 · 0 评论 -
hashcode相等两个类一定相等吗?equals呢?相反呢?
hashCode相等,equals也不一定相等, 两个类也不一定相等equals相同, 说明是同一个对象, 那么hashCode一定相同 哈希表是结合了直接寻址和链式寻址两种方式,所需要的就是将需要加入哈希表的数据首先计算哈希值,其实就是预先分个组,然后再将数据挂到分组后的链表后面,随着添加的数据越来越多,分组链上会挂接更多的数据,同一个分组链上的数据必定具有相同的哈希值,java中的...原创 2018-12-27 16:40:44 · 1906 阅读 · 0 评论