变量 : 顾名思义就是会改变的量。代码贴下面
int a=1; //这就是一个变量
变量又分为全局变量,局部变量,这有上面区别?代码展示
int a=1; //全局
public void jubu(){
int b =1; //局部变量
}
全局变量顾名思义就是这个变量我们都可以拿得到,而局部变量只存在当前方法中,只有当前方法能使用
常量: 可以理解成它是一个固定的数据,用关键字:final修饰,代码展示以下更清楚
final int FINALS_INT=1;
常量必须用final修饰,且常量名全为大写,值为固定不能修改
Java中的方法你可以理解为它是一种饮料,因为包装不同,味道也不同,也就是说每种方法中都有不同的实现
方法由访问修饰符 返回值类型 方法名 方法体组成
//方法由访问修饰符 返回值类型 方法名 方法体组成
public String xiaoHua(){
//方法体
return null;
}
public int xiaoMing(){
//方法体
return 0;
}
public Object object(){
//方法体
return new Object();
}
科普以下访问修饰符有哪些
返回值类型有哪些?
-无返回值
由void修饰的都是无返回值的
//方法由访问修饰符 返回值类型 方法名 方法体组成
public void jubu(){
//方法体
}
方法中可以带几个参数?
答:可以传你想要传的参数类型,不受限制
//方法由访问修饰符 返回值类型 方法名 方法体组成
public void jubu(int a,int b,int c){
}
同用类型的话 你不想写多个的话可以直接这样写
public void jubu(int...params){
}
这个表示你传的数据类型是int 可以传多个,它是以数组的形式储存
那有的人又说了,方法名相同可以吗?
答 :这个是可以的,不过前提是方法的参数不能一样,这样叫做方法的重载
//方法由访问修饰符 返回值类型 方法名 方法体组成
public void jubu(int a){
}
public void jubu(int a,int b){
}
我想了想,String必须看以下源码的equals
PS:大家记住了String是lang包下的,且是被final修饰的
代码如下:
public boolean equals(Object anObject) {
//比较地址
if (this == anObject) {
return true;
}
//判断该对象是不是String
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
//比较当前的长度跟穿过来的长度
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
//比较每一个字符是否相同
if (v1[i] != v2[i])
//不同返回fasle
return false;
i++;
}
//否则返回true
return true;
}
}
//比较当前地址不同的话直接返回false
return false;
}
注意一个问题:hashcode相同equals不一定相同,equals相同 hashcode一定相同
封装代码展示:
public class User {
private String name; //用户名
private int age; //年龄
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//这是有参的构造函数
public User(String name, int age) {
this.name = name;
this.age = age;
}
//这是无参的构造函数,如果没写有参的 默认是有的,如果写了有参的 无参记得也要写
public User() {
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
无参的构造函数,如果没写有参的 默认是有的,如果写了有参的 无参记得也要写
继承代码展示:
我们使用继承上面的User类
/**
* 猫类
*/
public class Cat extends User{
private String sex;
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Cat(){
}
public Cat(String sex){
this.sex=sex;
}
有上面发现上面?这边居然可以点到User的封装的方法,这就是继承!!!!!
多态代码展示:
我们在User中添加一个方法
public String jiao(){
return "叫";
}
然后可以在Cat类中重写一个jiao()的方法
@Override
public String jiao() {
return "狗叫";
}
多态就是这样子,自己多去练练
类型转化分为:显示转化和隐式转化
显示转化:就是大的类型转化为小的过程,看字节,越大的就是大
隐式转化:就是小的类型转化为大的过程
代码展示
float f= 2.2f;
int i = 4;
int i1 =(int)f+i;
//低的可以隐式自己转化
double d1 =i+f;
System.out.println(i1);
System.out.println(d1);
栈(Stack) 存放的都是局部变量(定义在方法内部或者方法参数上的参数),局部变量都有自己的作用域,一旦超出作用域会立即从栈内存中消失。方法的运行一定在栈中,运行某个方法会把这个方法压入栈中,一旦运行结束即从栈中弹出该方法。
堆(Heap): 只要是new出来的东西(成员属性、成员方法等等)都在堆中。堆里面存放的都系都有一个地址值
本文地址:https://blog.csdn.net/xiaoyanghnl/article/details/107279355
如对本文有疑问, 点击进行留言回复!!
NullPointerException: Attempt to invoke virtual method ‘android.content.res.XmlResourceParser androi
关于启动appium-desktop,报错:Cannot extract apk info using apkanalyzer. Falling back to aapt. Original ....
Gradle 发布共享库——如何通过Gradle发布Android依赖库(aar)到 jitpack 公共仓库
Gradle 发布共享库——如何通过Gradle发布java依赖库(jar)到 jitpack 公共仓库(—)
网友评论