Java杂学

1.无参与有参构造

构造器在新建类会默认一个无参构造
例如

public class Student{
}

那么里面就会藏着一个

public class Student{
public Student(){            //不能用void 而且和构造名必须和类名一致
}
}

有参构造

public class Pet{
String name;                       //定义name类型
public Pet(String name){
this.name=name;                    //this.name指pet类下的name参数;
}
}
2.类的实例化

Pet cat =new Pet();
代表把Pet类实例成一个cat并把Pet里面的参数传给cat
比如cat.name就是调用Pet里面的name属性

类:
静态的属性:属性
动态的行为:方法

例如:创建一个B.java和Application.java(同个包内)


package com.test;

public class B {
    public void test(){
        System.out.println("hello,b");
    }
}
package com.test;

public class Application {
    public static void main(String[] args) {//主方法
        B bb=new B();
        bb.test();//这样就可以调用B类的test方法

    }
}

3.new对象

1.new girfriend();
2.Pet cat =new Pet();
这个就是创造了Pet类的实体对象。

4.代码
一个分类:
public class Student{

String name;
int age;
char sex;

}
主函数:
public class test{                        //主类
public staitc void main(String[] args){   //主函数
Student xiaoming =new Student();          //实例化
xiaoming.name="liziming";                 //赋值给主函数
}
}

这样就完成了一个对象和累的实例化的创建

5.属性私有,get,set
private转public几种方法

1.set方法

private String name;

public void setName(String name){
this.name=name;
}
//调用setName方法即可在另一个类获得或者赋值数据

2.get方法

private String name;

public String getName(){
return this.name;
}
//调用getName即可

有什么用?
1.对程序进行检查,比如name是传值的
在接受另一个类传值后可以在getName或者setName中进行一些参数过滤。
2.隐藏代码实现细节
可以有效防止源码泄露等不安全的因素。
3.统一接口
4.提高系统的可维护性,其实这就封装的过程。

6.方法重载
public String name(String num){
}
public String name(String num,int age){
}
//上面两个方法的类型不同,当程序满足不同条件会调用不同的方法,这就是方法的重载。
7.继承:

是一种类跟类之间的关系,用extends表示(可以翻译成is a)(final类无子类)
java只有单继承没有多继承(一个类只能有一个父类,但可以有多个子类)
子类可以继承父类的所有方法!(定义的值也可继承),但是private无法继承。
所有的类都默认继承Object类,所以Object就是老祖宗,extends就是做了一个违背老祖宗的决定(hhhhhh)
这就意味着父类有的都可以在子类中取到。

student extends Person
//可以理解成student is a Person
//所以子类中的方法一定是比父类中方法要多或者相等。

代表student是Person的子类,或者叫做派生类

    //方法继承注意点
    //加上静态变量后,new对象得值跟左边有关,因为左边一定是父类或者自己所以无需担忧输出
    //不加static变量,new对象的值跟右边有关(调用方法时父类也要有这个方法,这就是方法重写),如果子类没有该名字的方法(也就是子类没有重写父类方法)则输出父类的同名方法
    B bb=new A();//非static时,输出的是A的方法,加static时,输出的是B的方法
    //当左边和右边不一样时,一定是左边是右边的父类或者是父类的父类
    //也可通俗解释为父类的引用指向子类的类型
8.方法重写

B bb=new A();//这就是方法重写
1.只能非static(static方法属于类不属于实例,不能被重写)非final(final属于常量),且不能为private
所以子类有父类的方法就叫方法重写
这和上面的继承不加static变量有着密切的联系
A.java

package com.test;

public  class A extends B{
}

B.java,是A.java的父类

package com.test;

public class B {
    public  void test(){
        System.out.println("hello,b");
    }

}

如果此时写

        A aa=new A();
        aa.test();
        System.out.println("---------------");
        B bb=new A();
        bb.test();

那么都会输出hello,b,因为A中为test方法,但是A继承了B所以有B的test方法,所以调用后会显示hello,b
如果A有test方法且继承B,那么就代表A重写了B的test方法,此时调用就都会显示hello,a

9.static变量
public class Application {

    public static int age;//静态属性
    public double num;

    public static void main(String[] args) {
        Application application=new Application();
        System.out.println(application.age);
        System.out.println(application.num);
        System.out.println(Application.age);
        System.out.println(Application.num);
    }
}
//前三句正确,最后一句错误

static变量就可以看做一个类,跟类一块加载,主方法调用类当然可以,但是age只是Application类的一个变量,所以无法调用
static常用于多线程,能被多次调用

同理,类里面有多个方法,如果是static方法即可直接调用,而非静态方法需要new后调用

public class Application {
    
    public static void run(){
    }
    public void stop(){
    }

    public static void main(String[] args) {
        run();
        stop();//这个方法不能直接调用
        new Application().stop();//需要new出来才能调用
    }
}

静态方法只执行一次,后面就不再执行,所以可以用来赋初始值

public class Application {

    {
        System.out.println("匿名模块");
    }
    static{
        System.out.println("静态模块");
    }
    public  Application(){
        System.out.println("方法模块");

    }

    public static void main(String[] args) {

        Application a=new Application();
        System.out.println("-------");
        Application B=new Application();
    }
}

输出结果:

静态模块
匿名模块
方法模块
-------
匿名模块
方法模块
嗨!很高兴回答你关于Python的NumPy库的问题。NumPy是一个强大的科学计算库,提供了高性能的数组对象和各种功能丰富的数学函数。 首先,你可以使用以下命令安装NumPy库: ```python pip install numpy ``` 一旦安装完成,你可以在Python脚本中导入NumPy库: ```python import numpy as np ``` 现在让我们来看一些NumPy的常用功能。 1. 创建NumPy数组: - 使用`np.array()`函数从Python列表或元组创建数组。 - 使用`np.zeros()`创建一个元素全为0的数组。 - 使用`np.ones()`创建一个元素全为1的数组。 - 使用`np.random`模块生成随机数组。 2. 数组操作: - 通过索引访问和修改数组的元素。 - 使用切片操作提取子数组。 - 使用数组的形状、大小和维度等属性。 3. 数学函数: - NumPy提供了丰富的数学函数,例如平方根(`np.sqrt()`)、指数函数(`np.exp()`)、对数函数(`np.log()`)等。 - 通过在数组上应用这些函数,可以进行元素级别的数学操作。 4. 数组运算: - NumPy支持基本的数组运算,如加法、减法、乘法和除法。 - 这些运算可以在两个数组之间进行,也可以在数组和标量之间进行。 5. 线性代数: - NumPy提供了许多线性代数操作的函数,如矩阵乘法(`np.dot()`)、矩阵求逆(`np.linalg.inv()`)、特征值和特征向量(`np.linalg.eig()`)等。 这只是NumPy库的一小部分功能,但对于进行科学计算和数据分析来说常重要。你可以参考NumPy官方文档以了解更多详细信息:https://numpy.org/doc/ 希望这些信息能帮助你开始学习NumPy库!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值