java自学
朽木自雕!!!
这个作者很懒,什么都没留下…
展开
-
创建多线程的四种方法总结+同步+线程生命周期
实现多线程的第一种方式:继承Thread类步骤:一、写一个类继承Thread类二、重写run()方法,run方法中写此线程执行的代码三、在main方法中new此类对象,调用start方法class MyThread extends Thread{ @Override public void run() { for(int i=0;i<99;i++){ if (i%2==0){ System.out.原创 2020-09-30 23:51:21 · 293 阅读 · 0 评论 -
System.out.println(字符串类型引用变量)为什么打印的是字符串的内容?不只是因为重写了toString()方法
一、java.io.PrintStream.pinntln(引用类型)的源代码传入一个引用后,会调用String类中的valueOf(Object)方法,假设这个引用时在静态方法区的“hello”的引用。 public void println(Object x) { ////将"hello的内存地址"传给valueOf() String s = String.valueOf(x); if (getClass() == PrintStream.class) {原创 2020-06-20 16:30:50 · 741 阅读 · 0 评论 -
05-第十五天-JAVASE进阶-内部类
1、什么是内部类内部类:在类的内部定义一个新的类,被称为内部类2、内部类的分类:静态内部类: 类似于静态变量 static class实例内部类:类似于实例变量 没有static的class局部内部类:类似于局部变量 在方法中的内部类3//使用内部类,表示这个Computation 这个类没有名字//这里表面看上去是接口可以直接new了,实际上{}代表了对接口的实现//不建议使用匿名内部类,因为代码太乱而且没有办法重复使class NTest{ static class Inne原创 2020-06-18 16:13:53 · 113 阅读 · 0 评论 -
04 第十五天-finalize、hashCode
原创 2020-06-18 14:09:09 · 72 阅读 · 0 评论 -
03-第十五天-javase进阶-equals要写彻底
原创 2020-06-18 13:56:39 · 86 阅读 · 0 评论 -
02-第十五天 javaSE进阶-API API帮助文档、toString、equals
什么是API: 应用程序接口(Application Program Interface)整个JDK类库就是一个javase的API每个API都会配置一个API帮助文档SUN公司提前写好的这套类库就是API1、toString()public String toString()返回对象的字符串表示形式。总的来说,这 toString方法返回一个字符串,“以文本方式表示”这个对象toString方法设计目的:通过调用这个方法可以将一个java对象转换为一个字符串另外,输出引用的时候会自动调用原创 2020-06-18 13:44:05 · 128 阅读 · 0 评论 -
01 第十五天-javaSE进阶-访问控制权限
1 访问控制权限有哪些privateprotectedpublic默认private修饰的变量只能在本类中访问public在哪里都行protected只能在本类以及同包、子类中访问默认表示只能在本类以及同包下访问访问控制符 本类 同包 非同包 非同包下的子类 任意位置public 可以 可以 可以 可以 可以protected 可以 可以 不行 可以原创 2020-06-18 11:14:30 · 93 阅读 · 0 评论 -
06-第十四天-javaSE进阶-package和import
关于 package 和import的机制package是java中的包机制,包机制的作用是为了方便程序的管理。不同功能的类分别存放在不同的包下package怎么用?package是一个关键字,后面加包名。例如:package com.bjpowernodes.javase.chapter17;注意:package语句只允许出现在java源代码的第一行包名的命名规范:一般都采用公司域名倒序的方式公司域名倒序+项目名+模块名+功能名对于带有package的java程序如何编译?怎么运行?原创 2020-06-17 17:14:20 · 93 阅读 · 0 评论 -
05-第十四天-javaSE进阶-抽象类和接口的区别?
语法区别:抽象类是半抽象的,接口是完全抽象的抽象类中有构造方法,接口中没有构造方法接口和接口之间支持多继承。类和类之间只能单继承一个类可以同时实现多个接口,一个抽象类只能继承一个类(单继承)接口中只允许出现常量和抽象方法(抽象类可以出现变量和非抽象方法)以后接口使用的比抽象类多。接口一般都是对“行为”的抽象...原创 2020-06-17 16:45:06 · 68 阅读 · 0 评论 -
04-十四天-java进阶-is a 、like a、
is a:cat is a Animal凡是满足 is a的表示继承关系A extends B;has a:I has a pen凡是能够满足 has a关系的表示 关联关系,关联关系通常以属性的形式存在A{B b;}like a:cooker like a FoodMenu(厨师像一个菜单一样)凡是满足like a关系的表示实现关系实现关系通常是类实现接口A implements B{}...原创 2020-06-17 16:40:38 · 140 阅读 · 0 评论 -
03-十四天-javaSE进阶-接口的例子
菜单是个接口,实现接口的是厨师,厨师有中餐厨师和西餐厨师(顾客有菜单,菜单是属性)任何一个接口都有调用者和实现者接口可以将调用者和实现者解耦合调用者面向接口调用实现者面向接口编写实现这个例子把厨师和顾客解耦合了。项目组可以先定义好接口,然后一些人写customer,一些人写AmericaCooker,一些人写ChianCooker,一些人写Test,这样编码效率就大大提高。其中最难的其实是接口的编写。顾客类public class Customer{ private FoodMenu fo原创 2020-06-17 16:34:30 · 153 阅读 · 1 评论 -
02 第十四天-javaSE进阶-接口在开发中的作用类似于多态的作用
多态的作用:面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力publiv class Master{ public void feed(Dog d){} public void feed(Cat c){} //假设又要养其它的宠物,那么这个时候需要再加一个方法(需要改代码) //这样扩展力太差了,违背了OCP原则(对扩展开放,对修改关闭)}public class Master{ public void feed(Animal a){ //面向Animal父类编程,父类原创 2020-06-17 16:18:04 · 119 阅读 · 0 评论 -
01第十四天-javaSE进阶-接口
interface Animal{ void a(int ab); }class dog implements Animal{// 错误: dog不是抽象的, 并且未覆盖Animal中的抽象方法a(int)}重写/覆盖/实现 关于接口类和方法的继承和覆盖通常称为实现10、一个非抽象的类,实现接口的时候,必须将接口中所有方法加以实现(如果一个抽象的类,实现接口的时候,就不需要将方法加以实现,因为继承的抽象类只能在抽象方法中)。11、一个类可以实现多个接口。(实现:implement原创 2020-06-17 11:47:34 · 136 阅读 · 0 评论 -
第十三天-javaSE进阶-接口
1、接口是一种“引用数据类型”。2、接口是完全抽象的。(抽象类是半抽象)3、接口怎么定义:[修饰符列表] interface 接口名{}(接口编译之后也是class文件)4、接口支持多继承。(interface C extends A,B{})5、接口中只有常量+抽象方法。(接口的方法不能带有方法体,不能有{}大括号)6、接口中所有的元素都是public修饰的7、接口中抽象方法的public abstract可以省略。8、接口中常量的public static final可以省略。9、接口中原创 2020-06-17 08:26:52 · 78 阅读 · 0 评论 -
第十三天-javaSE进阶-抽象类
为什么要有抽象类?因为类与类之间也有共同的特征,所以可以再归为一类。第一:抽象类怎么定义?在class前添加abstract关键字就行了。第二:抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。第三:final和abstract不能联合使用,这两个关键字是对立的。第四:抽象类的子类可以是抽象类。也可以是非抽象类。第五:抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。第六:抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。第七:抽象方法怎么定义?p原创 2020-06-17 08:25:07 · 173 阅读 · 0 评论 -
第十三天-javaSE进阶-final关键字
1、final修饰的类无法继承final修饰的类表示最终的类,所以不能有子类2、final修饰的方法final修饰的成员方法无法覆盖3、final修饰的变量只能赋一次值。3.1 final修饰的引用变量一旦指向某个对象,则不能再重新指向其它对象,但该引用指向的对象内部的数据是可以修改的。3.2 final修饰的实例变量必须手动初始化,不能采用系统默认值。(或者在构造方法里手动赋值,系统不负责赋默认值)final修饰的实例变量一般和static联合使用,称为常量。(实例变量既然使用final原创 2020-06-17 08:21:45 · 83 阅读 · 0 评论 -
05 第十二天-0基础自学java-super内存图分析
super表示的是当前对象的父类型特征,而不是父类对象。假设子类也有一个同名属性1、this.和super.大部分情况下都是可以省略的。2、this.什么时候不能省略?this.name=name;3、super.什么时候不能省略父类中有一个属性,子类也有这样的属性时,如果想在子类中访问“父类特征”,super.不能省略4、5、super调用父类方法...原创 2020-06-14 11:25:11 · 113 阅读 · 0 评论 -
04 第十二天--0基础自学java-super(实参)时的内存图分析
就是继承了父类的一些特有基因,这些基因一般不能读写,但是能通过super(实参)来读写原创 2020-06-14 11:09:19 · 125 阅读 · 0 评论 -
03 第十二天-0基础自学java-super(实参)来构建父类对象读写private实例变量
public class superTest{ public static void main(String [] args){ People p=new People(171);//虽然Tall是private,但是传入实参后,在对象堆内存中赋值。 //System.out.println("身高:"+p.Tall);// 错误: Tall 在 People 中是 private 访问控制,private只能在本类中使用 LiRui L=new LiRui(160); System.ou原创 2020-06-14 10:51:03 · 195 阅读 · 0 评论 -
02 第十二天- 0基础自学java-super概述
1、super是一个关键字,全部小写2、super和this对比学习this回顾this:能出现在实例方法中和构造方法中this的语法:this. this()this不能使用在静态方法中this.大部分情况下是可以省略的。this.在区分局部变量和实例变量的时候不能省略比如public void setName(String name){this.name=name;}this()只能出现在构造方法第一行,通过当前的构造方法调用本类中其它的构造方法,目的是代码复用。super概述原创 2020-06-14 10:15:50 · 144 阅读 · 0 评论 -
01 第十二天-0基础自学java-静态方法不存在方法覆盖,私有方法不能覆盖、方法覆盖的返回值
静态方法不存在方法覆盖静态方法的执行可以用“引用.”的方式来调用虽然可以用引用的方式调用,但是和对象无关由上节知道,多态是编译期和运行期不同的状态,运行期的不同于编译期的状态是由对象实现的。所以静态方法不存在多态,静态方法的方法覆盖没有意义。方法覆盖通常和多态联合起来使用public class OverrideTest05{ public static void main(String [] args){ Animal a=new Cat(); a.doSome(); //Cat的d原创 2020-06-14 09:25:49 · 139 阅读 · 0 评论 -
03 第11天 -0基础自学java-多态的练习题
/* 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。 可以弹奏的乐器包括二胡、钢琴和琵琶/ 实现思路及关键代码: 1)定义乐器类Instruments,包括方法makeSound() 2)定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin 3)定义乐手类Musician,可以弹奏各种乐器play(Instrument i) 4)定义测试类,给乐手不同的乐器让它弹奏。 */ public class Work{ public static voi原创 2020-06-14 08:30:54 · 274 阅读 · 0 评论 -
03 第十一天 0基础自学Java-多态在开发中有什么作用
1、多态在开发中有什么作用?降低程序的耦合度,提高程序的扩展力public class Master{ public void feed(Dog d){} public void feed(Cat c){}} 以上的代码表示:Master和Dog以及Cat的关系很紧密,耦合度高,导致扩展力差public class Master{public void feed(Pet pet){}}以上的代表中表示:Master和Dog以及Cat的关系就脱离了,Master关注的是Pet类。这样原创 2020-06-13 21:45:18 · 103 阅读 · 0 评论 -
02 第11天 0基础自学java--多态的基础语法、多态是什么
向上转型、向下转型向上转型:子—》父,(也叫做自动类型转换)向下转型:父—》子,(也叫做强制类型转换,需要加强制类型转换)注意:工作的时候不要说自动/强制类型转换,因为这些术语用于基本数据类型而不是引用数据类型不管是向上转型还是向下转型,都有一个大前提:它们之间存在继承关系public class Test01{ public static void main(String [] args){ Animal a1=new Animal(); a1.move(); Cat c=new原创 2020-06-13 20:40:13 · 82 阅读 · 0 评论 -
01 第11天 0基础自学java-object类中的方法重载
方法覆盖:就是将继承过来的那个方法给覆盖掉了。当子类对父类的继承过来的方法进行方法覆盖之后,子类对象执行的是覆盖之后的方法。方法覆盖的条件:一、两个类必须有继承关系二、重写之后的方法和之前的方法有相同的方法名、返回值类型,形式参数列表(如果形式参数列表不同,其实形成了方法重载,把主类的代码复制了过来)三、访问权限不能更低,只能更高(先记住)四、重写之后的方法不能比之前的方法抛出更多的异常,可以更少(先记住)注意:1、方法覆盖只针对于方法,和属性无关2、私有方法无法覆盖3、构造方法不能被继承原创 2020-06-13 17:17:32 · 122 阅读 · 0 评论 -
05 第十天-0基础自学Java-继承
一、什么是继承继承在现实世界中也是存在的,例如:父亲很有钱,儿子不用努力也很有钱二、继承的作用:基本作用:子类继承父类,代码可以得到复用。主要作用:因为有了继承关系,才有了后期方法覆盖和多态机制。三、语法java 中继承的语法格式:class B extends A{类体;}B继承A类,则A类称为父类、超类、基类B类称为子类、派生类、扩展类public class Test13{ public static void main(String [] args){ Account原创 2020-06-11 16:48:35 · 87 阅读 · 0 评论 -
04 第十天:0基础自学Java 构造方法中this()调用其它的构造方法
原创 2020-06-11 15:26:45 · 91 阅读 · 0 评论 -
03 第十天:0基础学java, this什么时候不能省略
public class Test13{ public static void main(String[] args){ Student s1=new Student(1111,"张三"); System.out.println(s1.num); System.out.println(s1.name); }}class Student{ int num; String name; public Student(){ } public Student(int num,Strin原创 2020-06-11 11:21:59 · 168 阅读 · 0 评论 -
02 第十天 0基础自学JAVA-静态方法访问静态变量,实例方法访问实例变量(this)
main方法访问实例变量:无法从静态上下文引用非静态变量ipublic class Test12{ int i=10; static int k=100; public static void main(String[] args){ //System.out.println(i);//无法从静态上下文引用非静态变量i System.out.println(k); }}静态方法访问实例变量public class Test12{ int i=10; static int k=原创 2020-06-11 11:01:03 · 580 阅读 · 2 评论 -
01第十天 0基础自学java- this
this:1、this是一个关键字,全部小写2、this是什么,在内存方面是怎样的?一个对象一个this。this是一个变量,是一个引用。this保存当前对象的内存地址,指向自身。所以严格意义上来说,this代表的就是“当前对象”3、this只能使用在实例方法中,谁调用这个实例方法,this就是谁。所以this代表的是:当前对象。4、this.大部分情况下是可以省略的5、为什么this不能用于静态方法中?因为this代表的是当前对象,而静态方法的调用不需要对象。public class T原创 2020-06-11 10:11:45 · 76 阅读 · 0 评论 -
02第九天 -0基础自学java- 静态方法,实例方法、static静态代码块、实例代码块
静态方法:使用static修饰的方法实例方法:没有static修饰的方法调用静态方法一、“类名.方法名();”二、“引用.方法名();"调用实例方法”引用.方法名();"public class StaticTest04{ public static void main(String[] args){ StaticTest04.doSome();//类名的方式调用静态方法 StaticTest04 s1=new StaticTest04(); s1.doOther();//引用的原创 2020-06-10 11:33:32 · 144 阅读 · 0 评论 -
05 第四天 0基础自学java--封装
封装更安全。封装的步骤:1、私有化(private)2、对外部提供一个简单的入口(写一个方法来get,再写一个方法来set)原创 2020-06-05 17:40:18 · 70 阅读 · 0 评论 -
04 第四天 0基础自学java-- 构造方法的方法重载
构造方法的参数不同(个数,类型)从而形成重载原创 2020-06-05 17:38:18 · 66 阅读 · 0 评论 -
03 第四天 0基础自学java-类、引用、对象、属性、实例变量、成员变量、构造方法,大总结
类我的理解:类是一群对象共同属性的抽象,把一群对象中的属性和动作抽象出来的产物,所以类中包含着共同的属性。在java中就是public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ }}类可以看成是创建Java对象的模板。一个类可以包含以下类型变量:局部变量:在方法、构造方法或者语句块中定义的变量被原创 2020-06-05 17:34:54 · 107 阅读 · 0 评论 -
02第四天 0基础自学java-当成员变量也是个引用时--套娃
public class taowa{ public static void main(String[] args) { B b=new B(); A a=new A(); a.b=b; System.out.println(a.b.i); } }class A{ B b;} class B{ int i;}反正牢记一点:引用存储的是地址。原创 2020-06-05 16:53:03 · 80 阅读 · 0 评论 -
01第四天 0基础自学java----方法传递引用以及内存分析图
原创 2020-06-05 16:41:00 · 75 阅读 · 0 评论 -
第三天09 0基础自学java- 参数传递
方法传递的参数可以是基本数据类型,也可以是引用数据类型。基本数据类型参数传递基本数据类型传递时,相当于赋值语句,赋值给了方法中的形式参数,而形式参数是一个局部变量,它的改变并不影响原来的值。比如public class A{ public static void main(String[] args){ int i=10; A.add(i); System.out.println(i); }}public static void add(int i){i++;System.out原创 2020-06-05 16:36:49 · 51 阅读 · 0 评论 -
第三天 08 0基础自学java-程序员的作用、成员变量、创建类和对象、成员变量默认值
JAVA程序员是一个桥梁,需要在世界中观察对象1和对象2有什么共同特征,然后再java程序中使用类来描述这些共同特征,然后通过类来实例化对象。对象之间相互协作起来形成系统,模拟现实世界。类=属性+方法。属性描述状态 ,方法描述动作/行为。因为属性对应的是数据,数据在程序中只能放到变量中。而且属性与实际的对象有关,也叫做实例变量。成员变量方法体当中声明的变量叫做局部变量,方法体之外声明的变量叫做成员变量。总结:成员变量=属性=实例变量创建类和对象新建一个java文件,在其中的公共类中创建未声明的原创 2020-06-05 16:02:21 · 97 阅读 · 0 评论 -
07 第三天 0基础自学java-面向对象的概念
面向过程主要关注的是:实现步骤以及整个过程面向对象主要关注的是:对象A,对象B,对象C,然后ABC组合OOA:面向对象分析OOD:面向对象设计OOP:面向对象编程面向对象三大特征:封装,继承,多态类:类中所描述的是所有对象的共同特征信息。在java中要想得到对象,必须先定义类,对象是通过类创造出来的。对象:实际存在的个体。...原创 2020-06-04 18:21:45 · 93 阅读 · 0 评论 -
06 第三天 0基础自学java-递归
什么是方法递归方法自己调用自己,这就是递归。上述代码告诉我们当递归没有结束条件,那么递归一定会发生栈溢出错误,所以递归一定要有结束条件。假如有结束条件时还是发生了栈溢出错误一、检查结束条件对不对。二、手动调整JVM栈内存大小。三、继续调整JVM栈内存大小。使用递归计算1-n的和...原创 2020-06-04 18:17:37 · 66 阅读 · 0 评论