
JavaSE
微风不躁
有志者,事竟成
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java的不定参数
问题:在传参数的时候,如果参数的个数不确定怎么办?参数可以是0个,也可以是1个,可以是任意多个,怎么办呢? 这个时候就需要用到不定参数了。 1)首先,来观察一下不定参数的基本格式: String…strings Object…objects int…is float…fs 2)不定参数只能作为方法的形参,不能用作变量 public static void main(String[原创 2017-07-20 19:38:32 · 956 阅读 · 0 评论 -
求最大公约数和最小公倍数
注:最大公约数和最小公倍数,我都是针对正整数的 (一)最笨的方法:穷尽法 2个数的最大公约数的最大值:2数中的较小数。 2个数的最大公约数的最小值:1 因此,只在这个范围内进行穷尽。代码示例: public static int gcd1(int max,int min){//穷尽法求最大公约数 int temp; if(max<min){//保证max原创 2017-07-24 10:40:55 · 368 阅读 · 0 评论 -
冒泡排序
先来整理一下冒泡排序的思路: 假设对一个长度为10 的无序数组进行冒泡排序,那么要跑9(length-1)趟,每一趟产生一个最大数。 第1趟,比较9次,得到一个最大数,最大数在数组末尾 第2趟,比较8次,得到一个次大数 第3趟,比较7次 … 第9趟,比较1次一般的冒泡排序算法: public static void bubbleSort1(int[] arr){ i原创 2017-07-24 11:08:48 · 344 阅读 · 0 评论 -
二分搜索
//二分查找的前提:有序序列 public static int binSearch(int[] arr,int number){ int low=0; int high=arr.length-1; int mid; while(low<=high){ //low<=high是一个关键点,不是low<high原创 2017-07-24 11:14:43 · 193 阅读 · 0 评论 -
String的分隔符
(1)空字符串作为分隔符 public static void main(String[] args) { String str="abc* def"; String[] splits = str.split(""); for (String string : splits) { System.out.println(st原创 2017-07-24 12:18:46 · 2903 阅读 · 0 评论 -
接口的方法与变量
(1)接口只包含常量和抽象方法。接口中方法的默认修饰符是public abstract;接口的变量的修饰符默认是public static final。代码验证:package com;//声明一个接口public interface Test { int age=0; //无任何修饰符 void print();//无任何修饰符} public static void原创 2017-07-25 18:23:54 · 1285 阅读 · 0 评论 -
Java中的final修饰符
(一)final可以修饰变量、方法、类(二)final修饰的变量1)被final修饰的变量叫做常量 2)不可变量,即不允许二次修改值。 3)一定要显式地给定初值。 ①为什么强调“显式”呢?因为类的实例变量和静态变量在不给初值的情况下,有默认的初始值,例如:int类型的变量的默认初始值为0。但是final修饰的变量必须要显式地给定初值,不然编译出错。 ②final变量必须显式给出初值,并且一旦原创 2017-07-25 18:58:14 · 223 阅读 · 0 评论 -
Java的4大访问修饰符
public非常简单,在任何地方都是可访问的,任何地方都是可见的(default)也比较简单,在包内可见,包外则访问不到关于private和protected会在下面的章节进行讲解。原创 2017-07-26 20:26:26 · 478 阅读 · 0 评论 -
访问修饰符private
1)private修饰的变量和方法只在类内部可见。代码示例:public class Test1 { private String name="hhx"; private void print1(){ System.out.println("private"); } public void method(){ this.print1();原创 2017-07-26 20:36:33 · 548 阅读 · 0 评论 -
访问修饰符protected
protected修饰符的确让我有点困惑。例如:Object的clone()方法就是protected修饰的。发现,有的时候可以访问,但很多时候根本访问不到。 (一)下面就以clone()方法为例 我在SuperClass类中,不重写clone(),只是访问。代码如下:package cn;public class SuperClass implements Cloneable{ p原创 2017-07-26 20:48:52 · 572 阅读 · 0 评论 -
方法的覆盖(重写)
(1)子类可以继承父类的所有方法和属性,但是有时候,子类需要修改父类中定义的方法的实现,这就是方法覆盖 (2)子类会继承父类的private方法,但是子类可以覆盖父类的private方法吗? 不能,只有能被子类访问的方法,才能被子类覆盖。 (3)静态方法只能被隐藏,不能被覆盖。代码示例:public class Super { public String getName(){原创 2017-07-26 20:53:58 · 343 阅读 · 0 评论 -
获取内部类的Class实例
获取外部类的Class实例大家都十分熟悉,那么怎么获取内部类的Class实例呢?采用如下方式: Class clazz=Class.forName(“外部类的全类名$内部类名”); 代码示例:public class Demo1 { public static void main(String[] args) throws Exception { Class clazz=原创 2017-07-24 09:43:35 · 2132 阅读 · 0 评论 -
输出规范的数组
如何输出类似{,,,}这种很规范的格式呢? 有二种方式: 1)除了数组的第1个元素,其他元素的前面都有逗号分隔 String[] strs={"aa","bb","cc","dd"}; StringBuilder sb = new StringBuilder(); sb.append('['); boolean isFirst=tru原创 2017-07-20 08:12:16 · 406 阅读 · 0 评论 -
结束多重循环
1)使用continue能否结束多重循环呢? 答:显然不能。continue意味着跳过本次循环,进入到下一次循环,continue不能终止循环 2)使用break能否结束多重循环呢? 答:不能。break的确可以结束循环,但是break只能终止单层循环,它只能终止最内层的循环。 3)使用原创 2017-07-20 08:15:34 · 818 阅读 · 0 评论 -
Java赋值表达式的值
思考:赋值表达式有值吗?答案是肯定的。来看例子: int a=3; System.out.println(a=10);//输出10 int b=4; int c=5; System.out.println(b=c);//输出5可见赋值表达式是有值的,赋值表达式的值等于要赋的值。多重赋值,从右到左: int a=原创 2017-07-20 20:02:19 · 4189 阅读 · 0 评论 -
Java循环变量在哪里赋值
在循环体外为循环变量赋初值: int sum=0; int i=0,j=0,k=0; for(;i<10;i++){ for(;j<10;j++){ for(;k<10;k++){ sum++; } }原创 2017-07-20 20:08:06 · 2423 阅读 · 0 评论 -
为不定参数Object...objects传数组
第一种情况,传非对象数组public class Demo3 { public static void main(String[] args) throws Exception { int[] arr={1,2,3}; //把int[]传给Object...objects,会把int[]当成1个Object对象处理 //传入非对象的数组时,像基本原创 2017-07-20 20:39:20 · 2109 阅读 · 0 评论 -
Java重载时,存在多个匹配的方法该如何选择?
1)什么是重载? 方法名相同,参数列表不相同 2)为什么会出现多个匹配的方法呢?来看一个例子:public class Demo5 { public static void main(String[] args) { //和test(Object obj)、test(String str)都能匹配 //会调用test(String str)原创 2017-07-20 19:46:23 · 2312 阅读 · 0 评论 -
Java反射
Java反射(一)认识java.lang.Class类 1)Class类的实例不能通过new来创建,Class类只有一个私有的构造方法。 private Class(ClassLoader loader) { classLoader = loader; }2)那么该如何取得Class类的实例呢?有3种方式: 方式一:类名.class 方式二:对象原创 2017-07-19 21:48:31 · 222 阅读 · 0 评论 -
Java反射的简单使用
1)获取非静态属性的值 //获取非静态属性的值 public static Object getField(Object obj,String fieldName) throws Exception{ Class clazz=obj.getClass(); Field field = clazz.getField(fieldName);原创 2017-07-21 16:57:29 · 341 阅读 · 0 评论 -
匿名内部类
1)创建匿名内部类的格式new 父类(参数列表)|接口(){ //这里面必须要实现父类或者接口未实现的方法 //这里面可以重写(覆盖)父类已经实现的方法 //外面使用大括号{}包裹起来}2)2个注意点 ①匿名内部类我们必须要继承一个父类或者实现一个接口,并且只能继承一个父类或者实现一个接口。要么继承一个父类,要么实现一个接口。 ②匿名内部类使用new来创建对象,不能是原创 2017-07-23 20:19:39 · 251 阅读 · 0 评论 -
并发与多线程(一)
(一)多线程 多个线程共享单个CPU,线程之间竞争CPU资源。 (二)多线程的优势 如果采用单线程:当一个线程在等待用户输入数据时(即当前线程并没有使用CPU),其他线程也无法取得CPU资源,导致CPU大部分时间都是空闲的,CPU的利用率很低。多线程则大大提高了CPU的利用率。多线程允许在输入文字的同时,打印或者保存文件。多线程可以使程序反应更快,交互性更强,执行效率更高。 (三)创建原创 2017-07-23 20:44:04 · 277 阅读 · 0 评论 -
代理模式
(一)什么是代理模式 通过引入一个代理对象,来操作、控制、访问真实对象。 给目标对象提供一个代理,并由代理对象控制对目标对象的引用。 (二)静态代理 1)模式结构 2)角色 Subject: 抽象主题角色 RealSubject: 真实主题角色 Proxy: 代理主题角色 3)简化的结构图 代理模式示意结构图比较简单,一般可以简化为如下图所示,但是在现实中原创 2017-07-23 23:41:42 · 192 阅读 · 0 评论 -
抽象方法的访问修饰符
抽象方法不能使用private修饰符,也不宜使用默认修饰符(default)(1)如果使用private修饰符public abstract class SuperClass { /* * The abstract method test in type SuperClass can only set a visibility modifier, * one of pu原创 2017-07-26 21:01:36 · 7809 阅读 · 2 评论