网站做app开发如何用自己电脑做网站服务器吗
news/
2025/10/4 21:06:37/
文章来源:
网站做app开发,如何用自己电脑做网站服务器吗,帮忙做网站,太原建设网站的公司目录 类的定义和使用类的定义格式 类的实例化类和对象的说明 this引用this引用的特性 对象的构造及初始化就地初始化构造方法 封装包导入包中的类自定义包 static成员static修饰成员变量static修饰成员方法 代码块代码块概念及分类构造代码块静态代码块 匿名对象 类的定义和使用… 目录 类的定义和使用类的定义格式 类的实例化类和对象的说明 this引用this引用的特性 对象的构造及初始化就地初始化构造方法 封装包导入包中的类自定义包 static成员static修饰成员变量static修饰成员方法 代码块代码块概念及分类构造代码块静态代码块 匿名对象 类的定义和使用
类的定义格式
// 创建类
class ClassName{ field; // 字段(属性) 或者 成员变量method; // 行为 或者 成员方法
}class为定义类的关键字ClassName为类的名字{}中为类的主体。
class future {public int time;public void decreaseTime() {}
}类名注意采用大驼峰定义 成员前写法统一为public 此处写的方法不带 static 关键字
注意事项 1. 一般一个文件当中只定义一个类,方便后期维护 2. main方法所在的类一般要使用public修饰(注意Eclipse默认会在public修饰的类中找main方法)
class future {public int _time;public static void main(String[] args) {System.out.println(1);}public void decreaseTime() {}
}此处的类未被public修饰,依旧可以使用main方法 3. public修饰的类必须要和文件名相同 4. 不要轻易去修改public修饰的类的名称
类的实例化
用类类型创建对象的过程称为类的实例化在java中采用new关键字配合类名来实例化对象。 public static void main(String[] args) {future date1 new future();future date2 new future();}(地址随便给的)
当你创建一个类的实例时实际上是在内存中分配了一块空间来存储这个实例并返回一个指向该内存空间的引用。这个引用指示了对象在内存中的位置而不是对象本身的内容。通过这个引用你可以访问和操作对象的属性和方法。
new 关键字用于创建一个对象的实例. 使用 . 来访问对象中的属性和方法. 同一个类可以创建多个实例.
类和对象的说明
类只是一种模板.类似于建筑图纸,实例化就是把图纸建造成高楼大厦 类是一种自定义类型,类可以实例化出多个对象,类似图纸可以修建很多大厦,实例化的对象占用实际的物理空间,存储成员变量,此处是普通成员变量,类的实例化会分配内存空间来存储对象的实例变量并提供指向方法的引用但静态成员变量和静态方法不会在实例化过程中分配新的空间
this引用
public class test {public static void main(String[] args) {stu a new stu();stu b new stu();a.InitStu(1,ab,1);b.InitStu(2,cd ,2);}
}
class stu {public int age;public String name;public int index;public void InitStu(int age, String name, int index) {}
}方法在类中是通过引用存在的,一个类创建的不同对象在调用同一个方法,而方法如何区分不同对象?
有宝子就很奇怪地会指出 调用函数之前不是会有对象吗,这里还要再次重申一遍,方法在类中是以引用的形式存在的,方法不像成员变量,方法进行的是一种重复操作,没必要每次实例化对象还要额外开辟空间,只需要开辟一次,之后调用之时去调用引用来进行方法调用,那么对于同一个方法,编译器该如何区分呢?这里就要提到this引用了 对象a和b都有自己的引用,在函数调用时,系统会默认把this引用一起传给方法.方法被调用时this关键字将会引用调用该方法的对象即a或b,来区分不同对象。
class stu {public int age;public String name;public int index;public void InitStu(int age, String name, int index) {age age;name name;index index;}
}对stu类里的InitStu方法进行如上操作,但是由于局部变量优先的原则,方法内的变量不会优先识别方法之外的变量,而是优先方法内的局部变量,方法内找不到才会到类中寻找,如上代码可以得出,方法里修改的是形参,未对类里的成员变量进行修改
如果要对成语变量进行修改,使用this引用来指明,如下
this引用的特性
1. this的类型对应类类型引用即哪个对象调用就是哪个对象的引用类型 2. this只能在成员方法中使用 3. 在成员方法中this只能引用当前对象不能再引用其他对象 4. this是“成员方法”第一个隐藏的参数编译器会自动传递在成员方法执行时编译器会负责将调用成员方法,对象的引用传递给该成员方法this负责来接收
对象的构造及初始化 public static void main(String[] args) {int a;System.out.println(a);}局部变量未初始化,打印会报错,但是如果是成员变量则不一样,成员变量未初始化在进行打印时不会报错,因为类的对象在申请空间之后依旧设置好了初始化值,如下 数据类型 默认值 byte 0 char ‘\u0000’ short 0 int 0 long 0L boolean false float 0.0f double 0.0 reference null stu a new stu();System.out.println(a.index);System.out.println(a.age);System.out.println(a.name);就地初始化
在声明成员变量时就直接给出了初始值
class stu {public int age 1;public String name null;public int index 1;public void InitStu(int age, String name, int index) {this.age age;this.name name;this.index index;}
}构造方法
构造方法(也称为构造器)是一个特殊的成员方法名字必须与类名相同在创建对象时由编译器自动调用并且在整个对象的生命周期内只调用一次
对象的产生一是需要为对象分配内存,二是调用合适的构造方法,而刚才类里没有构造方法为什么对象会产生,那是因为系统在发现类里没有构造方法的情况下会自动生成一个构造方法,如下 public class Animal {/*public Animal() {}系统默认生成这样的构造函数来进行调用*/String name;int age;}但是在你依旧有构造方法的时候,系统就不会生成默认构造方法,防止冲突,如下代码就会报错,因为不会生成默认构造方法
class Animal {public Animal(String name, int age) {this.age age;this.name name;}public String name;public int age;
}public class test {public static void main(String[] args) {Animal pig new Animal();System.out.println(pig.age);System.out.println(pig.name);}
}你还可以在你定义的构造方法调用另一个自己的构造方法
class Animal {public Animal(String name, int age) {this.age age;this.name name;}public Animal() {this(pig,1);}public String name;public int age;
}但是需要注意在public Animal() 中this(“pig”,1)只能当第一条语句,后面可以添加其他语句 不能成环 public Animal(String name, int age) {this();}public Animal() {this(pig,1);}递归套娃的感觉,反正成环就哒唛
封装
面向对象程序三大特性封装、继承、多态 public class things {
//这里把成员变量给密封在类里,外界无法访问private String name;private int year;private String color;public things() {}public things(String name, int year, String color) {this.name name;this.year year;this.color color;}public void show() {System.out.println(this.color);System.out.println(this.year);System.out.println(this.name);}
}public class test02 {public static void main(String[] args) {things book new things(book,1,red);book.show();}
}封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行 交互 注意:这里的接口包括方法,也包括之后学的接口
包
在面向对象体系中提出了一个软件包的概念即为了更好的管理类把多个类收集在一起成为一组称为软件包。
包是对类,接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式 在同一工程允许存在相同名称的类,只要处在不同的包中即可
导入包中的类
可以使用java.util.Arrays导入java.util包中的Arrays类 public static void main(String[] args) {int[] arr {1,2,3};System.out.println(java.util.Arrays.toString(arr));}这样的写法比较麻烦,可以使用import语句导入包
import java.util.Arrays;
public class test03 {public static void main(String[] args) {int[] arr {1,2,3};System.out.println(Arrays.toString(arr));}
}导入包时也可以使用import java.util.;.; *是通配符,表示所有的意思,就是导入ijava.util所有的类 建议使用显式的指定要导入的类名,否则会出现冲突
使用import static导入包中静态的方法和字段 静态方法 public static void main(String[] args) {int[] arr {2,33,3};sort(arr);//可以直接写方法for (int x:arr) {System.out.println(x );}}自定义包
基本规则
在文件的最上方加一个package语句指定该代码在哪个包中包名需要尽量指定成唯一的名字,通常会用公司的域名颠倒形式包名要和代码路径相匹配如果一个类没有package语句,则该类被放到一个默认包 (子类要等到后面再展开) 先提一下default,他就是不加任何访问限定符的状态 上图创建一个A包,包里有B和C包,B包里有testB类,C包里有testC类
public class testC {int tem;//不加访问修饰限定符public int tem1;
} 在另一个包B里实例化testC这个类,对象名叫a,上图可以看出我们可以访问tem1,但是default也就是不加访问限定符的情况下,无法访问tem这个变量
static成员
public class person {public int time;public String name;
}
定义person这个类,变量time对于每个person都一样的(前提),但是如果你每次实例化一个对象都要开辟空间给变量time,本来一个就够了,但是你每次都要开辟空间,就会造成空间浪费 如果time属性对于所有的person对象都是相同的那么将其设置为static是合适的。这样这个属性就不会与每个person对象实例关联而是与类本身关联。这样无论创建多少个person对象都只会有一个time属性所有对象都会共享这个属性
public class person {public static int time;public String name;
}static修饰成员变量
静态成员变量在方法区中存储 ,被static修饰的只能是成员变量,不能是局部变量
static修饰的成员变量称为静态成员变量静态成员变量最大的特性不属于某个具体的对象是所有对象所共享的
不属于某个具体的对象是类的属性所有对象共享的不存储在某个对象的空间中既可以通过对象访问也可以通过类名访问但一般更推荐使用类名访问类变量存储在方法区当中生命周期伴随类的一生(即随类的加载而创建随类的卸载而销毁)
static修饰成员方法
Java中被static修饰的成员方法称为静态成员方法是类的方法不是某个对象所特有的。静态成员一般是通过静态方法来访问的。
【静态方法特性】
不属于某个具体的对象是类方法可以通过对象调用也可以通过类名.静态方法名(…)方式调用更推荐使用后者不能在静态方法中访问任何非静态成员变量静态方法中不能调用任何非静态方法因为非静态方法有this参数在静态方法中调用时候无法传递this引用
代码块
代码块概念及分类
使用{}定义一段代码称为代码段.根据代码块定义的位置以及关键字,又可分为以下四种
普通代码块(少见)构造块静态块同步代码块(期待后续)
构造代码块
构造块定义在类中的代码块(不加修饰符)。也叫实例代码块。构造代码块一般用于初始化实例成员变量。
静态代码块
使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量 注意事项 静态代码块不管生成多少个对象其只会执行一次 静态成员变量是类的属性因此是在JVM加载类时开辟空间并初始化的 如果一个类中包含多个静态代码块在编译代码时编译器会按照定义的先后次序依次执行(合并) 实例代码块只有在创建对象时才会执行
public class test {public static void main(String[] args) {person tem1 new person();System.out.println();person tem2 new person();}
}
class person {public static int time;public String name;person() {System.out.println(构造方法);person.time 1;this.name 张三;}public void show() {System.out.println(this.name);System.out.println(person.time);}//静态代码块static {System.out.println(静态代码块);}//构造代码块{System.out.println(构造代码块);}
}匿名对象
举个栗子:
public class test {public static void main(String[] args) {String tem;System.out.println(tem);}
}思维有些混淆的宝子会说不是有默认值吗,我们再说一下,是类里的成员变量在未初始化的时候会有默认值,tem是局部变量,需要初始化 类里的成员变量 当你在类中声明一个变量这个变量是类的成员变量。如果这些变量没有被初始化它们会有默认值。例如对于引用类型如String默认值是null。对于数值类型默认值是相应的默认值例如int的默认值是0。 局部变量 局部变量是在方法内部声明的变量。它们只在方法的作用域内存在并且没有默认值。在声明之后必须显式地初始化它们否则编译器会报错。 public class test {String tem;public static void main(String[] args) {System.out.println(tem);//依旧报错}
}
有宝子又要说:这也不行啊,上面的代码main方法被static修饰,是个类方法,他的调用不依赖于对象,但是tem这个成员变量属于类,不能直接调用,因为静态的里面不能访问非静态的,如果你非要调用就给一个对象即可
public class test {String tem;public static void main(String[] args) {test a new test();System.out.println(a.tem);}
}public class test {String tem;public static void main(String[] args) {System.out.println(new test().tem);//匿名对象的方式}
}匿名对象的缺点: 只能使用一次,不能重复使用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927554.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!