随笔分类 - java
java学习交流
摘要:就像上一节当中我们讲到的数组工具集一样,如果我们把他看作一个类,来应用,不阻止他new函数的话,这个类我们在整个过程当中我们只是用他来当一个工具。假如每次用都要new一下产生一个新对象的话,就会显得整体很浪费内存,那么能不能让这个对象在整个过程当中只产生一个实例供我们来使用呢,因为只要整个过程一个实例就够用了。有,那就是单例设计模式。在说单例设计模式之前,我们来看一下什么是设计模式。所谓的设计模式,就是前人在解决生活中常见问题时,抽象出来的一些思考的方法,这种思考的方法能够加快我们软件的构建速度。设计模式始源于建筑行业,我们都知道建筑行业,在建筑一个物体的时候,不可能重复的拆了盖,盖了拆。这样
阅读全文
摘要:java是一门面向对象的语言,我们也提到过,面向对象的一个优点就在于能够提高代码的复用性,前面我们详细讲过数组的查找,排序,等等,为了提高代码的复用性,我们何不自己写一个数组的工具集,来综合下前面所学的面向对象的知识呢,这一节,我们就来写一个实例来练练手,也来加深下我们对所学知识的理解。在写程序之前,我们来想一下需求需求: 1、根据所输入的数组,进行查找,排序。 2、能够单独封装成一个类来供其他用户使用思路: 1、首先要完成对方法的封装,我们把所有的方法都放到类当中,这个时候我们需要定义一个类Arrtool 2、此时类需要一个构造方法进行初始化。 3、对相应功能分离封装到函数当中,并...
阅读全文
摘要:在我们之前学习语句的时候,我们讲过一种比较特殊的语句块,那就是局部代码块。局部代码块的作用是什么呢,就是把临时使用的变量放在里面,之后执行完之后,局部代码块中定义的变量会直接被释放,这样就避免了那些我们只用一次的变量的释放。那么类当中有么有一种比较特殊的代码块么?肯定是有的,我们现在就来看下,在类方法外部定义的类的代码块都有什么作用?代码实例:class ClassScop{ int num; String name; /** *类内部的代码块开始 */ { System.out.println("Hello World!"); } ClassScop(int num,St
阅读全文
摘要:上一节当中描述了static的用法,以及成员变量和静态变量的区别。但是static除了可以修饰成员变量使之成为静态变量外,他还可以同时修饰函数,使之成为静态函数,我们来看一个例子: class StaticDemo{ String name; int a ; static String xiangmu="xiangmu"; /** *这个方法被static关键词修饰之后,就变成了静态方法,这里我们需要注意的一点就是static声明的方法当中,只能够调用 *静态变量,因为他是在类没有被初始化为对象之前而存在的,所以这个静态方法当中不能使用this或者super之类的关键词 *
阅读全文
摘要:讲完了this这个关键字,我们继续前进,这节我们讲另外一个比较重要的东东,java当中的static,在main函数前面这个家伙都在那里一直挺着,你瞅见了么,你就不好奇么,你就不想知道他杵在那里做什么么?好,我们来看下,他到底是作什么的。看一下我们的代码:class StaticDemo{ int name; String country; void speak() { System.out.print(name+"sssss"+country); }}class StaticShowDemo{ public static void main(String[] args)
阅读全文
摘要:讲完了this这个关键字,我们继续前进,这节我们讲另外一个比较重要的东东,java当中的static,在main函数前面这个家伙都在那里一直挺着,你瞅见了么,你就不好奇么,你就不想知道他杵在那里做什么么?好,我们来看下,他到底是作什么的。看一下我们的代码:class StaticDemo{ int name; String country; void speak() { System.out.print(name+"sssss"+country); }}class StaticShowDemo{ public static void main(String[] args)
阅读全文
摘要:在我们讲构造函数的时候,我们知道,如果同时在java的堆内存当中,同时存在好几个刚进内存,但是又没来得及初始化的同一个类的对象。在这种情况下,那么如何去区分栈内存当中的构造函数是属于那个对象的呢,其实从底层上来讲的话,JVM已经为我们分好了,然后给了我们一个this,这个this是一个关键字,也是区分调用该构造函数的时候,此时的构造函数的所属对象是谁。示例:class ThisDemo{ int num; String name; ThisDemo(int n) { num = n; } ThisDemo(String s) { name = s; } ThisDemo(String...
阅读全文
摘要:在java当中目前我们学到的一个比较特殊的函数就是main函数,他是JVM执行的入口,所以书写的格式是固定的,现在我们来介绍java中另一个比较特殊的函数:构造函数:构造对象的时候调用的函数,作用,给对象进行初始化。 创建对象的时候必须用构造函数进行初始化,但不显示的声明构造函数的时候,默认会有一个空参数的构造函数: Person(){} 如果显式声明一个构造函数的时候,类就调用这个构造函数。同时,那个原来默认的构造函数也会被取消,函数的相同不相同就跟类名还有参数的个数和顺序决定的。 特点: 1、构造函数名与类名相同 2、不用定义返回值类型 3、没...
阅读全文
摘要:在以往几节当中我们讲到了什么是类,类就是对一类事物的描述,比如现在我们有一个人类class Person{ /** *这里我们分别在name和age上加上了元素的访问权限 *这里的private是指,这个变量只能被当前类访问,其他的地方是没法访问到的,即使是当前类的一个实例化对象 *也是没法访问的。那么这里就有一个问题了,我们定义了一个成员变量确没法访问: *这里举一个详细的例子来讲: *我们有一个房子,房子里面放了很多的钱,我们的房子有一个门。在我们没有给这个门加任何的限制的时候,任何人 *都是可以进出的,也就是说他默认的就是public修饰符,这样是不是很危险呢?此时为了安全期间,我们就用
阅读全文
摘要:思考的两种方式:举例:把大象放到冰箱里 一、面向过程 :【打开冰箱-》把大象放里面-》关上冰箱门】面向过程注重的是过程,也就是(动作【函数】),然后按照动作依次去执行就好了。 代表语言是C语言 二、面向对象:找到冰箱,做了封装【冰箱打开,冰箱存储,冰箱关闭】面向对象强调的是对象,面向对象强调的是对象(实体)。冰箱就是一个对象,本身具有的功能有:打开、关闭、 存储。 代表语言:C++,java,C# 面向对象的特点:1、面向对象是常见的一种思想,符合人们的思考习惯。2、面向对象的出现,将复杂的事情简单化了。3、面向对象的出...
阅读全文
摘要:java当中的二维数组,存储一组比较特殊的对象。他存储一个数组,同时存储的数组当中又存储着元素。java二维数组的声明方式一:class Arr2Demo{ public static void main(String[] args) { /** *二维数组的定义格式:元素类型[][] 数组变量名称 = new 元素类型[3][];第一个维度必须 *确定,也就是第一个方括号 */ int[][] arr = new int[3][]; }}二维数组出现的意义,二维数组之所以会出现是因为,现在当数据一多的时候我们往往希望把他们存储起来,比如说:现在有甲乙两个成员,他们当中分别各有一组...
阅读全文
摘要:10进制转16进制,以及10进制转2进制,还有10进制转8进制,这些转换如果按照常规思路的话,会灰常的麻烦。我们来看一下 10进制转16进制:假如这里有一个十进制数字:35,我们的需求就是把这个35转成16进制的。思路:先把35转换成二进制,然后二进制再转换16进制。代码:class SearchTable{ public static void main(String[] args) { String[] s = searchTable(35,3,7); /** * *for(int i = 0; i=0 ; i--){ arrtemp[i] = num&mask; n...
阅读全文
摘要:在一组数据当中我们取出一个我们想要的数据的过程,谓之查找。1、简单查找: 需求:在一组数据当中找到你想要的一个数据,并且返回该数据在数组当中的索引。 思路:循环遍历整个数组,然后拿各个元素与所要找出的数字做比较,如果相等返回该位置的索引,相反如果查找完之后,仍没有找到数据,此时就返回-1,表示该数据不再数组当中。 代码:class SimpleFind{ public static void main(String [] args) { int[] arr = {1,3,89,43,6,80}; System.out.print(simpleFind(arr,3)); } pub...
阅读全文
摘要:上一篇文章说了,选择排序。选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推。这一节当中我们来看下冒泡排序:思路: 1、首先拿第一个数字跟第二个比,如果第二个数字大于第一个数字,那么保持各自位置,否则交换位置,让数字更小的那一个在前面,数字较大的在后面。第一个跟第二个比较完之后,紧接着第二个跟第三个进行比较,比较的原则也是根据第一次比较的原则,这样比较下去一直到数组的结尾,我们得到的是这个数组中的最大值,并且这个最大值在数组的结尾处。也就是说最末尾的值我们现在已经确定了,我们接下来确定的就是次末尾的值。然后再想之前那样循环遍历比较,只是此时的.
阅读全文
摘要:在讲完java中数组定义的两种方式之外,这里需要讲一下对数组常用的方法,第一个就是排序。加入我们现在有个数组:int[] arr = {12,87,34,3,98,33,103};思路1: 1、首先拿数组当中的第一个数字与其他数字一一做比较,如果比第一个数字大,那么就两个元素调换下位置,如果小于或者等于就维持原来的状态。循环往复,直至确定第一个数字是这个数组当中的最小值。然后把索引为0的元素,放到一边,之后再用索引为1的元素与其他元素依次比较,如果大于索引1的位置的元素,那么两者互换下位置,如果小于或者等于那么则保持各自位置不变,之后在索引位置2的位置,确定剩下的数字当中是最小的,其他位置的.
阅读全文
摘要:在上一节中我们讲到了数组的概念,定义,以及在内存当中的表现形式。那么这里我们来说一下,数组的另一种定义方式。在上一篇当中我们规定是这个样子定义数组的,class ArrDemo{ public static void main(String[] args) { int[] arr = new int[8]; }} 这个方式定义数组,有一个缺陷,什么缺陷呢,当你有整组数组元素,这里我们姑且称之为 3,4,598,88。比如说你现在有这个么一组数,如果你按照上面方法定义数组的话,你要做的事情就多了,你得一个个把这些个元素复制到数组当中去,想想这是多么痛苦,尽管你可以用循环来简化这个操作,但是当..
阅读全文
摘要:在java语言当中,为了更方便多个数据的管理,这里提供数组。比如说,现在我们有一组数据,7,8,9,9,为了保存这四个数据,我们分别要定义变量来保存,少了还好说。但是假如,有100多个数据呢,我们一个一个定义起来,岂不是很麻烦。这个时候我们就引入了数组这个概念,来方便我们对多个数组的管理。数组的定义:同一种类型数据的集合,通俗来讲,数组就是一个容器,容纳同类型的数据。数组的书写格式:元素类型[] 数组名 = new 元素类型[元素的个数或者叫做数组的格式]。class ArrDemo{ public static void main(String[] args) { /** *数组的定义格..
阅读全文
摘要:讲完了语句结构还有运算符、变量,下面我们来了解下函数。那么什么是函数,函数的定义是怎样的呢?函数的定义:函数是指在类当中定义的一段有特殊功能的代码段,同时函数在类中也被成为方法。class FunDemo{ public static void main(String[] args) { int a=1,b=2; int c; c = a+b; c = 5+7; //为了能够重复引用这个方法,我们在类中定义一个特殊方法。 add(2,8); } int add(int a,int b) { return a+b; //但是这里a,b都是未初始化的,为了初始化这两个变量,...
阅读全文
摘要:java当中比较特殊的两个关键字:break,continue.从字面意思来看的话break就是打断的意思,而continue就是继续的意思。这两个关键词用途范围是很明确的: break:只能用在switch语句或者循环语句当中,除此之外不能单独应用,否则编译的时候会报错: continue:它的应用范围要比break小一层,有且只能用在循环语句当中。1、break: 作用:break的作用是结束switch语句,还有跳出当前的循环体,如果有标签的话,则挑出指定标签的循环体。 int a = 1;switch(a){ case 1: System.out.pr...
阅读全文
摘要:for是循环当中经常用到的一个结构,练熟了才可以。练习-需求描述:在控制台打印以下形式的字符:* * * * ** * * * * * * * * *思路,首先分析需求的规律 1、首先分析需求要求的字符的数据结构特点,他的最小单位是什么,这里是"* "一个星号+一个空格 2、默认情况下,控制台打印字符都是靠左侧垂直排列的,但是现在第二行,第三行都不是靠左侧排列的,如果想让他按照需求排列的话,那么就得在*之前加" “(空格)补齐。 3、这里为了方便看,我们先把空格用"-"来表示,那么以上需求就变成了:* * * * *-* * * *--* *
阅读全文


浙公网安备 33010602011771号