【狂神说Java】Java零基础学习笔记-面向对象

面向对象01:什么是面向对象

面向过程&面向对象

  • 面向过程思想

    • 步骤清晰简单,第一步做什么,第二步做什么....
    • 面对过程适合处理一些较为简单的问题
  • 面向对象思想
    • 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
    • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
  • 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

什么是面向对象

  • 面向对象编程(Object-Oriented Programming, OOP)
  • 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
  • 抽象:编程思想!持续的学习,茅塞顿开!多实践,多测试大脑中的想法!实践出真知~
  • 三大特性:
    • 封装
    • 继承
    • 多态
  • 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象
  • 从代码运行角度考虑是先有类后有对象。类是对象的模板。

面向对象02:回顾方法的定义

回顾方法及加深

  • 方法的定义

    • 修饰符
    • 返回类型
    • break:跳出switch,结束循环 和 return的区别
    • 方法名:注意规范就OK 见名知意
    • 参数列表:(参数类型,参数名)...
    • 异常抛出:疑问,后面讲解
  • 方法的调用:递归
    • 静态方法
    • 非静态方法
    • 形参和实参
    • 值传递和引用传递
    • this关键字
package com.oop.demo01;

import java.io.IOError;
import java.io.IOException; //Demo01 类
public class Demo01 {
//main 方法
public static void main(String[] args) { } /*
修饰符 返回值类型 方法名(...){
//方法体
return 返回值;
}
*/
//return 结束方法,返回一个结果!
public String sayHello(){
return "hello,world";
} public void print(){
return;
} public int max(int a,int b){
return a>b ? a : b; //三元运算符!
} //数组下标越界: Arrayindexoutofbounds public void readFile(String file) throws IOException{ }
}

面向对象03:回顾方法的调用

package com.oop.demo01;

public class Demo02 {
public static void main(String[] args) {
// //静态方法 static
// Student.say(); //非静态方法
//实例化这个类 new
//对象类型 对象名 = 对象值;
Student student = new Student();
student.say();
} //static和类一起加载的
public static void a(){
//b();
} //类实例化 之后才存在
public void b(){ }
} 学生说话了
package com.oop.demo01;

//学生类
public class Student {
// //静态方法
// public static void say(){
// System.out.println("学生说话了");
// } //非静态方法
public void say(){
System.out.println("学生说话了");
}
}
package com.oop.demo01;

public class Demo03 {
public static void main(String[] args) {
//实际参数和形式参数的类型要对应!
int add = Demo03.add(1,2);
System.out.println(add);
} public static int add(int a,int b){
return a+b;
}
} 3
package com.oop.demo01;

//值传递
public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a); //1 Demo04.change(a);
System.out.println(a); //1
} //返回值为空
public static void change(int a){
a = 10;
}
} 1
1
package com.oop.demo01;

//引用传递:对象

//对象,内存!

public class Demo05 {
public static void main(String[] args) {
Perosn perosn = new Perosn();
System.out.println(perosn.name); //null Demo05.change(perosn);
System.out.println(perosn.name); //黎明の微笑
} public static void change(Perosn perosn){
//perosn是一个对象,指向的--->Perosn perosn = new Perosn(); 这是一个具体的人,可以改变属性!
perosn.name = "黎明の微笑";
}
} //定义了一个Perosn类,有一个属性:name
class Perosn{
String name; //null
} null
黎明の微笑

面向对象04:类与对象的创建

类与对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物.

    • 动物、植物、手机、电脑......
    • Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具亩的特点和行为
  • 对象是抽象概念的具体实例

    • 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。

    • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念.

我们可以将这些思想转换为代码实现!

创建与初始化对象

  • 使用new关键字创建对象
  • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下俩个特点:
    • 1.必须和类的名字相同
    • 2.必须没有返回类型,也不能写void
  • 构造器必须要掌握
package com.oop.demo02;

//学生类
public class Student {
//属性:字段
String name; //null
int age; //0 //方法
public void study(){
System.out.println(this.name+"在学习");
}
} //Person ---> 身高,体重,年龄,国家
//学程序好?对世界进行更好的建模! --->宅! --->音乐,旅游,出国!
package com.oop.demo02;

//一个项目应该只存一个main方法
public class Application {
public static void main(String[] args) {
//类:抽象的,实例化
//类实例化后会返回一个自己的对象!
// student对象就是一个student类的具体实例! Student xiaoming = new Student();
Student xh = new Student(); xiaoming.name = "小明";
xiaoming.age = 3; System.out.println(xiaoming.name);
System.out.println(xiaoming.age); xh.name = "小红";
xh.age = 3; System.out.println(xh.name);
System.out.println(xh.age);
}
} 小明
3
小红
3

面向对象05:构造器详解

package com.oop.demo02;

//java ---> class
public class Person {
//一个类即使什么都不写,它也会存在一个方法
//显示的定义构造器
String name;
int age; //alt + insert //实例化初始值
//1.使用new关键字,本质是在调用构造器
//2.用来初始化值
public Person(){ } //有参构选:一旦定义了有参构造,无参就必须显示定义
public Person(String name){
this.name = name;
} public Person(String name, int age) {
this.name = name;
this.age = age;
}
} /*
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person("liming",23); System.out.println(person.name); //liming
}
*/ /*
构造器:
1.和类名相同
2.没有返回值
作用:
1.new本质在调用构造方法
2.初始化对象的值
注意点:
1.定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造 ALt + Insert this. =
*/

面向对象06:创建对象内存分析

package com.oop.demo03;

public class Pet {
public String name;
public int age; //无参构造 public void shout(){
System.out.println("叫了一声");
}
} /*
public static void main(String[] args) {
Pet dog = new Pet(); dog.name = "旺财";
dog.age = 3;
dog.shout(); System.out.println(dog.name);
System.out.println(dog.age); Pet cat = new Pet();
}
*/

面向对象07:简单小结类与对象

/*
1.类与对象
类是一个模板:抽象,对象是一个具体的实例
2.方法
定义、调用!
3.对应的引用
引用类型: 基本类型(8)
对象是通过引用来操作的:栈 ---> 堆
4.属性:字段 Field 成员变量
默认初始化:
数字:0 0.0
char:u0000
boolean:false
引用:nuLL
修饰符 属性类型 属性名 = 属性值!
5.对象的创建和使用
- 必须使用 new 关键字创造对象,构造器 Person kuangshen = new Person();
- 对象的属性 kuangshen.name
- 对象的方法 kuangshen.sleep()
6.类
静态的属性 属性
动态的行为 方法 `封装、继承、多态`
*/

面向对象08:封装详解

封装

  • 该露的露,该藏的藏

    • 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
  • 封装(数据的隐藏)
    • 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
  • 记住这句话就够了:属性私有,get/set
package com.oop.demo04;

//类     private:私有
public class Student {
//属性私有
private String name; //名字
private int id; //学号
private char sex; //性别
private int age; //年龄 //提供一些可以操作这个属性的方法!
//提供一些 public 的 get、set 方法 //get 获得这个数据
public String getName(){
return this.name;
} //set 给这个数据设置值
public void setName(String name){
this.name = name;
} //alt + insert public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public char getSex() {
return sex;
} public void setSex(char sex) {
this.sex = sex;
} public int getAge() {
return age;
} public void setAge(int age) {
if (age>120 || age<0){ //不合法
this.age = 3;
}else {
this.age = age;
}
}
} /*
1. 提高程序的安全性,保护数据
2. 隐藏代码的实现细节
3. 统一接口
4. 系统可维护增加了
*/ /*
public static void main(String[] args) {
Student s1 = new Student(); s1.setName("黎明の微笑");
System.out.println(s1.getName()); s1.setAge(-1); //不合法的
System.out.println(s1.getAge());
}
*/

面向对象09:什么是继承

继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。

  • extends的意思是“扩展”。子类是父类的扩展。

  • JAVA中类只有单继承,没有多继承!一个儿子只能有一个爸爸,但是一个爸爸可以有多个儿子

  • 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。

  • 继承关系的俩个类,一个为子类(派生类)一个为父类(基类)。子类继承父类,使用关键字extends来表示。

  • 子类和父类之间,从意义上讲应该具有"is a"的关系。

  • object类

  • super

  • 方法重写:重点--->多态

package com.oop.demo05;

//在Java中,所有的类,都默认直接或者间接继承Object
//Person 人 : 父类
public class Person /*extends Object*/ {
//public
//protected
//default
//private
private int money = 10_0000_0000; public void say(){
System.out.println("说了一句话");
} public int getMoney() {
return money;
} public void setMoney(int money) {
this.money = money;
}
} /*
ctrl + H 树
*/ /*
public static void main(String[] args) { Person person = new Person(); Student student = new Student();
student.say();
System.out.println(student.getMoney());
}
*/
package com.oop.demo05;

//Student is 人 : 派生类,子类
//子类继承了父类,就会拥有父类的全部方法!
public class Student extends Person {
}
package com.oop.demo05;

//Teacher is 人 : 派生类,子类
public class Teacher extends Person {
}

面向对象10:Super详解

super注意点:

  1. super 调用父类的构造方法,必须在构造方法的第一个
  2. super 必须只能出现在子类的方法或者构造方法中!
  3. super 和 this不能同时调用构造方法!

Vs this:

代表的对象不同:

​ this:本身调用者这个对象

​ super:代表父类对象的应用

前提

​ this:没哟继承也可以使用

​ super:只能在继承条件才可以使用

构造方法

​ this();本类的构造

​ super();父类的构造!

package com.oop.demo05;

public class Person /*extends Object*/ {
public Person() {
System.out.println("Person无参执行了");
} // public Person(String name) {
// System.out.println("Person有参执行了");
// } protected String name = "liming"; //私有的东西无法被继承!
public void print(){
System.out.println("Person");
} } /*
public static void main(String[] args) {
Student student = new Student(); //student.test1(); //student.test("微笑"); }
*/
package com.oop.demo05;

public class Student extends Person {
public Student() {
//隐敲代码:调川了父类的无参构选
super(); //调用父类的构造器,必须要在子类构造器的第一行
//this("hello");
System.out.println("Student无参执行了"); // super("name");
// System.out.println("Student有参执行了");
} public Student(String name) {
this.name = name;
} private String name = "weixiao"; public void print(){
System.out.println("Student");
} // public void test1(){
// print(); //Student
// this.print(); //Student
// super.print(); //Person
// } // public void test(String name){
// System.out.println(name); //微笑
// System.out.println(this.name); //weixiao
// System.out.println(super.name); //liming
// }
}

面向对象11:方法重写

重写:需要有继承关系,子类重写父类的方法!

​ 1.方法名必须相同

​ 2.参数列表列表必须相同

​ 3.修饰符:范围可以扩大但不能缩小: public>Protected>Default>private

​ 4.抛出的异常:范围,可以被缩小,但不能扩大; ClassNotFoundException ---> Exception(大)

重写,子类的方法和父类必要一致;方法体不同!

为什么需要重写:

​ 1.父类的功能,子类不一定需要,或者不一定满足!Alt + Insert ; override;

package com.oop.demo05;

//重写都是方法的重写,和属性无关
public class B {
// public static void test(){
// System.out.println("B=>test()");
// } public void test(){
System.out.println("B=>test()");
}
} /*
//静态的方法和非静态的方法区别很大!
//静态方法://方法的调用只和左边,定义的数据类型有关
//非静态:重写 public static void main(String[] args) {
A a = new A();
a.test(); //A //父类的引川指向了子类
B b = new A(); //子类重写了父类的方法
b.test(); //B
}
*/
package com.oop.demo05;

//继承
public class A extends B {
// public static void test(){
// System.out.println("A=>test()");
// } //Override 重写
@Override //注解:有功能的注释!
public void test() {
System.out.println("A=>test()");
}
}

面向对象12:什么是多态

多态

  • 即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
  • 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)
  • 多态存在的条件
    • 有继承关系
    • 子类重写父类方法
    • 父类引用指向子类对象
  • 注意:多态是方法的多态,属性没有多态性。
  • instanceof (类型转换) 引用类型,判断一个对象是什么类型~
package com.oop.demo06;

public class Person {
public void run(){
System.out.println("run");
}
} /*
多态注意事项:
1. 多态是方法的多态,属性没有多态
2. 父类和子类,有联系类型转换异常! ClassCastException!
3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new Son(); 1. static 静态方法,属于类,它不属于实例
2. final 常量;
3. private 私有方法;
*/ /*
public static void main(String[] args) {
//一个对象的实际类型是确定的
//new Student();
//new Person(); //可以指向的引川类型就不确定了:父类的引用指向子类 //Student 子类型,能调用的方法都是自己的或者然承父类的!
Student s1 = new Student();
//Person 父类型,可以指向了类,但是不能调用子类独有的方法
Person s2 = new Student();
Object s3 = new Student(); //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
s2.run(); //子类重写了父类的方法,执行子类的方法
s1.run(); //s2.eat();
((Student) s2).eat();
s1.eat();
}
*/
package com.oop.demo06;

public class Student extends Person {
@Override
public void run() {
System.out.println("son");
} public void eat(){
System.out.println("eat");
}
}

面向对象13:instanceof和类型转换

package com.oop.demo06;

public class Person {
public void run(){
System.out.println("run");
}
} /*
public static void main(String[] args) {
//Object > Person > Student
//Object > Person > Teacher
//Object > String //System.out.println(X instanceof Y); //能不能编译通过! Object object = new Student();
System.out.println(object instanceof Student); //true
System.out.println(object instanceof Person); //true
System.out.println(object instanceof Object); //true
System.out.println(object instanceof Teacher); //false
System.out.println(object instanceof String); //false
System.out.println("===================="); Person person = new Student();
System.out.println(person instanceof Student); //true
System.out.println(person instanceof Person); //true
System.out.println(person instanceof Object); //true
System.out.println(person instanceof Teacher); //false
//System.out.println(person instanceof String); //编译报错!
System.out.println("===================="); Student student = new Student();
System.out.println(student instanceof Student); //true
System.out.println(student instanceof Person); //true
System.out.println(student instanceof Object); //true
//System.out.println(student instanceof Teacher); //编译报错!
//System.out.println(student instanceof String); //编译报错!
}
*/ /*
public static void main(String[] args) {
//类型之间的转化:父 子 // //高 低
// Person obj = new Student();
//
// //student将这个对象转换为Student类型,我们就可以使川Student类型的方法了!
// Student student = (Student) obj;
// student.go();
// //((Student) obj).go(); //子类转换为父类,可能丢失自己的本来的一些方法!
Student student = new Student();
student.go();
Person person = student;
}
*/ /*
1. 父类引用指向子类的对象
2. 把子类转换为父类,向上转型;
3. 把父类转换为子类,向下转型; 强制转换
4. 方便方法的调用,减少重复的代码!简介 封装、继承、多态! 抽象类,接口
*/
package com.oop.demo06;

public class Student extends Person {
public void go(){
System.out.println("go");
}
}
package com.oop.demo06;

public class Teacher extends Person {

}

面向对象14:static关键字详解

package com.oop.demo07;

//static
public class Student {
private static int age; //静态的变量 多线程!
private double score; //非静态的变量 public void run(){ } public static void go(){ } public static void main(String[] args) {
// Student s1 = new Student();
//
// System.out.println(Student.age);
// //System.out.println(Student.score);
// System.out.println(s1.age);
// System.out.println(s1.score); //run();
go();
}
}
package com.oop.demo07;

public class Person {
//2:赋初值~
{
//代码块(匿名代码块)
System.out.println("匿名代码块");
} //1:只执行一次~
static {
//静态代码块
System.out.println("静态代码块");
} //3
public Person() {
System.out.println("构造方法");
} public static void main(String[] args) {
Person person1 = new Person();
System.out.println("====================");
Person person2 = new Person();
}
} 静态代码块
匿名代码块
构造方法
====================
匿名代码块
构造方法
package com.oop.demo07;

//静态导入包~
import static java.lang.Math.random;
import static java.lang.Math.PI; public class Test {
public static void main(String[] args) {
System.out.println(random());
System.out.println(PI);
}
}

面向对象15:抽象类

抽象类

  • abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。
  • 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
  • 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
  • 抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。
  • 子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。
package com.oop.demo08;

//abstract 抽象类:类 extends    单继承~    (接口可以多继承)
public abstract class Action {
//约束~有人帮我们实现~
//abstract 抽象方法,只有方法名字,没有方法的实现!
public abstract void doSomething(); //1. 不能new这个抽象类,只能靠子类去实现它;约束!
//2. 抽象类中可以写普通的方法~
//3. 抽象方法必须在抽象类中~
//抽象的抽象:约束~ //思考题?
//new,存在构造器么? (存在)
//抽象类存在的意义 抽象出来~ 提高开发效率
}
package com.oop.demo08;

//抽象类的所有方法,继承了它的子类,都必须要实现它的方法~ 除非子类也是抽象的(abstract)~
public class A extends Action {
@Override
public void doSomething() { }
}

面向对象16:接口的定义与实现

接口

  • 普通类:只有具体实现
  • 抽象类:具体实现和规范(抽象方法)都有!
  • 接口:只有规范!自己无法写方法专业的约束!约束和实现分离:面向接口编程
  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能…”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。
  • 接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。
  • OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。

声明类的关键字是class,声明接口的关键字是interface

作用:
1. 约束
2. 定义一些方法,让不同的人实现~ 10 ---> 1
3. public abstract
4. public static final
5. 接口不能被实例化~,接口中没有构造方法~
6. implements可以实现多个接口
7. 必须要重写接口中的方法~
8. 总结博客~
package com.oop.demo09;

//抽象的思维~ Java 架构师~

//interface 定义的关键字 , 接口都需要有实现类
public interface UserService {
//常量~ public static final
int AGE = 99; //接口中的所有定义的方法其实都是抽象的 public abstract
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
package com.oop.demo09;

//抽象类:extends~
//类 可以实现接口 implements 接口
//父现了接口的类,就需要重写接口中的方法~ //多继承~利用接口实现多继承~
public class UserServiceImpl implements UserService,TimeService {
@Override
public void add(String name) { } @Override
public void delete(String name) { } @Override
public void update(String name) { } @Override
public void query(String name) { } @Override
public void timer() { }
}
package com.oop.demo09;

public interface TimeService {
void timer();
}

面向对象17:N种内部类

内部类

  • 内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。
  • 1.成员内部类
  • 2.静态内部类
  • 3.局部内部类
  • 4.匿名内部类
package com.oop.demo10;

public class Outer {
private int id=10; public void out(){
System.out.println("这是外部类的方法");
} public class Inner{
public void in(){
System.out.println("这是内部类的方法");
} //获得外部类的私有属性~
public void getID(){
System.out.println(id);
}
} //局部内部类
public void method(){
class Inner{
public void in(){ }
}
}
} //一个java类中可以有多个class类,但是只能有一个public class
class A{
public static void main(String[] args) { }
} /*
public static void main(String[] args) {
//new
Outer outer = new Outer(); //通过这个外部类来实例化内部类~
Outer.Inner inner = outer.new Inner();
inner.in();
inner.getID();
}
*/
package com.oop.demo10;

public class Test {
public static void main(String[] args) {
//没有名字初始化类,不用将实例保存到变量中~
new Apple().eat();
UserService userService = new UserService() { @Override
public void hello() { } };
}
} class Apple{
public void eat(){
System.out.println("1");
}
} interface UserService{
void hello();
}

【【狂神说Java】Java零基础学习视频通俗易懂】https://www.bilibili.com/video/BV12J41137hu?p=60&vd_source=fd5defd6aaa826e3b6e0c06073353e32

【狂神说Java】Java零基础学习笔记-面向对象的更多相关文章

  1. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  2. 《Java并发编程的艺术》第4章 Java并发编程基础 ——学习笔记

    参考https://www.cnblogs.com/lilinzhiyu/p/8086235.html 4.1 线程简介 进程:操作系统在运行一个程序时,会为其创建一个进程. 线程:是进程的一个执行单 ...

  3. Spark (Python版) 零基础学习笔记(一)—— 快速入门

    由于Scala才刚刚开始学习,还是对python更为熟悉,因此在这记录一下自己的学习过程,主要内容来自于spark的官方帮助文档,这一节的地址为: http://spark.apache.org/do ...

  4. Spark (Python版) 零基础学习笔记(二)—— Spark Transformations总结及举例

    1. map(func) 将func函数作用到数据集的每个元素,生成一个新的分布式的数据集并返回 >>> a = sc.parallelize(('a', 'b', 'c')) &g ...

  5. python基础学习笔记——面向对象初识

    面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...

  6. 音乐出身的妹纸,零基础学习JAVA靠谱么

    问:表示音乐出身的妹纸一枚  某一天突然觉得身边认识的是一群程序员   突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...

  7. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  8. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  9. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  10. 总结了零基础学习Java编程语言的几个基础知识要点

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这 ...

随机推荐

  1. Hadoop未授权访问

    Hadoop未授权访问 是什么? Hadoop 是一种用来处理和存储大量数据的软件工具,可以用来日志分析,推荐系统,数据备份   核心组件: 存储大数据:HDFS 文件系统 处理大数据:MapRedu ...

  2. Go语言单元测试的执行

    Go 语言推荐测试文件和源代码文件放在同一目录下,测试文件以 _test.go 结尾.比如,当前 package 有 calc.go 一个文件,我们想测试 calc.go 中的 Add 和 Mul 函 ...

  3. 2024/9/16 CSP-S模拟赛试题

    A 这题是很有意思的一个题,思路就是你考虑kt的位置只可能在四个角,因为这种情况下,他的距离才会最远对吧,所以你就暴力找另一个人fengwu的点的位置,然后计算他们之间的距离然后你求一个\(\max\ ...

  4. php接收二进制流

    /** 二进制流生成文件 * $_POST 无法解释二进制流,需要用到 $GLOBALS['HTTP_RAW_POST_DATA'] 或 php://input * $GLOBALS['HTTP_RA ...

  5. 流程编排LiteFlow-业务代码解耦

    LiteFlow真的是相见恨晚啊,之前做过的很多系统,都会用各种if else,switch这些来解决不同业务方提出的问题,有时候还要"切一个分支"来搞这些额外的事情,把代码搞得一 ...

  6. Ansible自动化管理集群,Playbook语法

    Ansible配置文件存在优先级的问题 ANSIBLE_CONFIG ansible.cfg 项目目录 .ansible.cfg 当前用户的家目录 /etc/ansible/ansible.cfg A ...

  7. 快速量产低功耗 4G 定位方案?Air201 模组来搞定!

    今天我们来了解的是Air201模组快速量产低功耗 4G 定位方案,希望大家有所收获. 寻寻觅觅低功耗4G定位方案? 一个Air201就够了! --定位准.体积小.功耗低,助力行业客户快速量产! 01 ...

  8. PHP数据库连接教程 - QSZ

    1准备工作 首先,确保你的环境中已安装: PHP 7.0+ MySQL/MariaDB Web服务器(Apache/Nginx) 2数据库连接代码 // config.php setAttribute ...

  9. select2的搜索框不能输入内容

    select2的搜索框不能输入内容 原因:原来是模态对话框强制使自己处于焦点状态,导致select2的搜索框无法获取焦点所致. 解决办法:在初始化中重写模态对话框的enforceFocus函数 $.f ...

  10. 利用Stripes实现Java Web开发

    Stripes是一个以让程序员的web开发简单而高效为准则来设计的基于动作的开源Java web框架.本文将介绍Stripes与其它如Struts之类基于动作的框架的区别和其提供的一些存在于Ruby ...