java【二】

问题????


Main方法中为什么有Static和String[] args??

What Static?

首先static被叫做静态变量,,如果是修饰方法的则叫做静态方法,作为静态方法他其实是有一定的好处的,因为静态变量和静态方法在类被加载的时候就会分配内存空


Why Use Static?

为什么我们会在main方法中用到static 呢?大家都知道C++于java非常的相似,更加确切的说,JAVA对C++进行了改革,在C++中main方法是一个全局的变量。所以当我们程序运行的时候,我们可以很方便的找到我们的main方法


但是在java中我们使用的是以类作为程序的组织单元,当我们需要执行的时候,我们根本不知道mian方法到底在那个类中,因为这个时候main方法不是全局方法了,但是我们可以针对唯一的一个有main方法的一个类进行编译,这个时候在编译的时候Static已经分配了内从空间,所以我们的main方法主动就被加载了。所以使用了static让我们的main方法成为了主程序入口。

使用Static就相当于你们家的门,自动就会打开,你也可以进去,想干嘛就干嘛~


String[] args

String[]:表示的是java中字符串数组,而args只是普通的变量名字,可以随意的进行定义,为什么我们在这用args是因为:args是arguments的缩写(参数)
如果我们不按照main方法的规定来写,那么会出现找不到main方法的定义


其实他与我们其他类中的方法写参数是一样的,但我们需要再我们的运行我们的程序,并且传进去参数的时候,这个时候我们就需要使用main方法向里面传递参数用String[] args 用来接受,不过他只能用在cmd下面进行调用

arg变量用来获取命令行中用户输入进去的参数


一个程序是否可以有多个主入口??

主入口在这里其实上指的是main方法,在一个类中可以有多个main方法,但是他们都会进行覆盖,也就是说只会运行一个,java中一个类为单位的,所以我们不同的类,都会有main()方法,但是程序运行的时候只找一个类中的mian()方法。

public Static Void main (string[] args){

 }

java中instanceof的用法和作用??

他的作用是测试他左边的对象是否是他右边类的实例,返回的类型是Boolean类型的,并且他是java固定的关键字,什么是关键字?关键字指的就是main public 等,也就是可以被javaC可以识别的


他的作用就是这个对象是否指向的对象是右侧类的 一个实例


instanceof 和什么技术非常相似??

Instanceof是java的一个二元操作符,他和== ,<,> 是一类东西,都是他是由字母组成的


instanceof 在代码中的体现??

result表示的是Boolean类型
object表示的任意对象的表达式
class 任意已定义的对象类
如果 Object是class是的一个实例,那么返回的是true,如果不是则是false

boolean result = object instanceof class

Instanceof什么时候使用?

当你拿到一个对象的引用时,你可能要判断这个引用真正指向的类,所以你需要从该类继承树的底层开始,使用instanceof 进行判断

什么是引用变量??

如果想知道什么是引用变量,那么你必须知道的是什么是引用?和变量是什么??
变量实质指的是一块内存单元,一块内存里面存放着变量的值

a表示的就是变量的名,1就是变量的值
int a =1 

当变量指向一个对象的时候,这个变量就是被称作引用变量

a就是引用变量,他指向了一个A对象,也可以说他引用了一个A对象
A a = new A()

解刨引用变量代码以及堆栈体会??

对于下面的代码我感觉大家应该都非常熟悉吧,但是你体会到他的指针了吗?你有体会到为什么要写一个()吗???
对于下面的代码我总共分为4个部分
1. 对于 new Judy 来说他是Judy类的一抹版,或者说一个对象,这个对象我们给他在栈中分配了存储空间
2. 对于new Judy(),后面的()来说,他表示的意思是在对象创建完成之后,我们立刻调用我们的Judy类,然后对刚刚生成的对象进行初始化,初始化使用Judy()类中的构造函数,java默认是有构造函数的
3. Judy smalljudy 表示的是引用变量,这个引用变量相当于我们的一个绳子,他是用来干嘛的呢?为了指向Judy对象的对象引用,他存放在栈中
4. “=”,他表示的意思是对象引用指向刚创建的那个Judy对象,这个时候你可以理解为指针哦

这个时候你会想引用变量到底在这起到了什么作用?其实就是当我们实例化对象的时候我们的对象并不是叫做smalljudy也不是叫做Judy,他是没有名字,他只有一个存储空间,但是我们怎么找到他的呢?就是smalljudy这个引用变量,相当于是一个绳子一样,牵住了我们的小对象,嘿嘿,所以我们就可以找到他了哦~~~

Judy  smalljudy = new Judy();

在Java中List与ArrayLIst的区别??

list在java中表示的是接口,而ArrayList表示的接口list的实现类,并且我们为什么要用List list = new ArrayList()而不用Arraylist list = new Arraylist()因为ArrayList不是一个类,而List是一个接口,如果当你想在加一个类的时候,你会发现ArrayList需要进行更改了,如果我们是用List那么完全OK,应该我们使用的是接口,跟不需要动代码哦~~

方法、函数的区别??

方法和函数其实特别容易区分,如果学过js那么可以跟js进行结合,如果是方法那么我们使用的是对象.方法,如果是直接调用的那么叫做是函数,因为在js中我们就是直接定义函数名,然后进行直接调用。

为什么在观察者模式中属性声明为 Private??

为了不让显示的实例对象通过对象.属性名来使用和修改,而是通过set属性名,get属性名更改,这样会更加的安全,也防止了其他类进行直接访问和修改

this是什么??

类表示实例的本身

什么时候使用this??

下面的代码是关于为什么要在这里使用this,在这里我们会看见有两个name,一个是成员变量,一个是参数name传递过来的,所以这个时候我们的javaC根本不知道变量在哪里?没有针对性的找到我们饿name,所以这个时候我们就需要使用this来进行特指我们要进行针对哪一个属性进行编辑,而this通常指的是我们的我们全局变量的属性

public class Student{
   string  name
   private void SetName(String name){
      this.name=name.将局部变量的值传递给成员变量
   }
}

跟this相关的技术有什么??

java中的this与js中的this进行比较,java中的this指当前方法的对象,而js中的this是指的调用他的对象,如果没有则指的是window


JFrame 什么??如何用??

JFame就是把GUI程序中的按钮或者便签或者文本字段这些安放到一个地方,然后我们把他们组织起来呈现给用户,其实就是我们的一个windows对象,也就是我们vb窗体中没有按钮等一系列工具的一个大框框


Swing是什么??

他是一个为java设计的GUI工具包,是java基础类的一部分,它包括图形用户界面(GUI),他与AWT抽象窗口工具包非常相似:该包提供了一套与本地图形界面进行交互的接口,是java提供的用来尽力和设置java图形用户界面的基本工具

什么是内部类??

在一个类的内部再定义一个类,而外部的这个类就叫做外部类,相对于内部定义的了类来说的,内部类成为了外部类的一个成员,并且依附在外部类中,内部类可以自由的访问外部类的成员,无论是不是private私有的


Why need 内部类??

1.内部类可以访问外部类的所有
2.内部类可以对其他同一个包中的所有类隐藏起来
3.实现多重继承,内部类可以得到外部类的所有


三种类型观察者模式??

观察者模式的定义是对象之间的一对多依赖,所以当一个对象改变状态的时候,他的所有依赖者都会收到并且自动更新


1.普通观察者模式

1.首先应该有一个Subject接口,这个接口是主题接口
2有一个 WeatherData,它是用来实现我们Subject接口的 ,有注册,删除,通知功能,我们使用ArrayList来进行存储我们的观察者,我们在更新的时候,代用的Observe接口,
3需要有Observe接口,改接口主要定义Update()通知更新的方法
4DisplayElement接口,该接口主要用来实现布告板接口的
5就是具体的接受者CurrentConditionsDisplay,实现了Observe和DisplayElement接口,用来更新和发布
6在程序运行的时候我们需要先进行注册,然后在进行updata


2.Java内置观察者模式

java内置观察者模式主要是使用的Observable类,这个类是java本身就有的,他是java.util包中的


他的特点是1他即可以实现推的过程,也可以实现啦的过程,所以非常方便,并且他还进行了限制,不是你想进行推或拉就可以直接进行的,她会有判断的条件,所以非常好


1使用Observable类,类里面有注册,删除,添加,还有一个setChange,它使用标记状态是否有改变,如果改变则去通过,如果SetChange不为True则不会进行通知,notifyObserves(Object args) ,notifyObserves(),在这里类中里面会有两个notifyObserves,一个有参数的,一个无参数,有参数的就表示我们要接受我们更新集合中的数据表示的推,如果是无参数的则表示的拉,我们会根据setChange的判断true或者false来进行判断是否走notifyObservers方法来进行通知观察者
2WeatherData是用来继承Observable类的,所以Observable类中有的我们就不用写了,这个时候我们只需要写我们的获取的值使用get方法就可以了,我们必须先调用setChange()再调用notifyObservers
3Observer接口中的updata方法需要两个参数,updata(Observable o , object args),一个是观察者对象,一个是更新的数据集合


3.JDK其他观察中模式

主要使用的技术是JFrame,和java内部类的好处,Jbutton


总结

一路走下来感觉不是特别难,都还可以,只需要团队一起学习,碰撞出火花那才叫做美~~~

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王雪芬-ghqr-264962

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值