第一部分 构造方法 第一节到第五节
构造方法的三个特点:方法名字和类名字相同 无返回值类型 无return语句
② 无参构造方法和有参构造方法,这里有个东西 就是自己创造的类如果想像数组那样创建的前提是自己写了有参构造才可以
③ 给成员变量赋值的两种形式 第一是构造方法 第二是set放
code1:这个自己的代码出错了,不知道什么原因
code2:这个代码自己写出来了,很大的一个感觉就是这个也可以像数组那样赋值,可是之前明明有一个代码自己不能这样赋值啊,这是什么原因,难道是因为这次自己写了有参构造方法,嗯,肯定是这个原因,当写了有参构造方法的时候,就可以用数组简略方法那种方式直接赋值了。
class Demo2_person
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
person p1;
p1= new person("beijingniu",23);
p1.show();
}
}
class person
{
private String name;
private int age;
public person(){
}
public person(String name,int age){
this.name = name;
this.age = age;
}
public void show(){
System.out.println(name+age);
}
}
code3 这个的意思是两种赋值方式,一种是构造方法赋值,一种是set方法赋值 自己多理解一下
class Demo3_person
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
person p1 = new person("杜欣",21);
p1.show();
person p2 = new person();
p2.setname("葛梦");
p2.setage(22);
p2.show();
}
}
class person
{
private String name;
private int age;
public person(){}
public person(String name,int age){
this.name = name;
this.age = age;
}
public void setname(String name){
this.name = name;//is this right? worry about it
}
public String getname(){
return name;
}
public void setage(int age){
this.age = age;
}
public int getage(){
return age;
}
public void show(){
System.out.println(name+age);
}
}
code4 这个也是和上个代码类似的一个形式,就是两种赋值方式,一种是构造方法,一种是set方法。还是要记住,可以像数组那样赋值的前提,是自己写了有参构造方法。
class Demo4_student
{
public static void main(String[] args)
{
student s1;
s1 = new student();
s1.setname("gongxi");
s1.setage(19);
//System.out.println(s1.getname+s1.getage);
System.out.println(s1.getname()+s1.getage());
student s2;
s2 = new student("beijng",22);
s2.show();
}
}
class student
{
private String name;
private int age;
public student(){};
public student(String name,int age){
this.name = name;
this.age =age;
}
public void setname(String name){
this.name = name;
}
public String getname(){
return name;
}
public void setage(int age){
this.age = age;
}
public int getage(){
return age;
}
public void show(){
System.out.println("my name is"+name+"..."+"my age"+age);
}
}
code5 和前面两个类似
第二部分 创建对象的步骤 第六节
这个里面最重要的就是这个图,把这个步骤要搞懂
第二个就是这个代码,自己要明白,无参构造里面可以直接赋值的,并不是必须什么都不给,要灵活掌握
class Demo1_student
{
public static void main(String[] args)
{
student s;
s=new student();
s.show();
}
}
class student
{
private String name = "anbei";
private int age = 43;
public student(){
name = "trump";
//age = "62";
age = 62;
}
public void show(){
System.out.println(name + age);
}
}
第三部分 练习() 第七节 第八节
这里面两个代码,自己写了一个,第一个代码使得自己可以计算长方形的周长和面积,算是一个小小的功能实现吧 但在代码过程中,自己还是有错误的,自己这个方法应该是无参数的,自己还加了参数。自己做的这个类是一个整体,你创建一个对象的时候,已经可以调用这个类里的所有东西,你的方法只是类中的一部分,可以不用另外传参数
class test_rec
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
rec r1;
r1 = new rec(2,3);
int x=r1.zhouchang();
System.out.println(x);
}
}
class rec
{
private int chang;
private int kuan;
public rec(){}
public rec(int chang,int kuan){
this.chang = chang;
this.kuan = kuan;
}
public void setchang(int chang){
this.chang=chang;
}
public int getchang(){
return chang;
}
public void setkuan(int kuan){
this.kuan = kuan;
}
public int getkuan(){
return kuan;
}
public int zhouchang(/*int chang,int kuan*/){
return 2*(chang+kuan);
}
public int mianji(/*int chang,int kuan*/){
return chang*kuan;
}
}
第四部分 static 讲解 9 10 11 12节
① 首先理解static这个关键字,与类相关的,类的共同属性
static关键字的特点
* a:随着类的加载而加载
* b:优先于对象存在
* c:被类的所有对象共享
* 举例:咱们班级的学生应该共用同一个班级编号。
* 其实这个特点也是在告诉我们什么时候使用静态?
* 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
* 举例:
* 饮水机(用静态修饰)
* 水杯(不能用静态修饰)
* 共性用静态,特性用非静态
* d:可以通过类名调用
* 其实它本身也可以通过对象名调用。
* 推荐使用类名调用。
* 静态修饰的内容一般我们称其为:与类相关的,类成员
② static的注意事项
* a:在静态方法中是没有this关键字的
* 如何理解呢?
* 静态是随着类的加载而加载,this是随着对象的创建而存在。
* 静态比对象先存在。
* b:静态方法只能访问静态的成员变量和静态的成员方法
* 静态方法:
* 成员变量:只能访问静态变量
* 成员方法:只能访问静态成员方法
* 非静态方法:
* 成员变量:可以是静态的,也可以是非静态的
* 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
* 简单记:
* 静态只能访问静态。
③ 静态变量也叫类变量 成员变量也叫对象变量
* A:所属不同
* 静态变量属于类,所以也称为为类变量
* 成员变量属于对象,所以也称为实例变量(对象变量)
* B:内存中位置不同
* 静态变量存储于方法区的静态区
* 成员变量存储于堆内存
* C:内存出现时间不同
* 静态变量随着类的加载而加载,随着类的消失而消失
* 成员变量随着对象的创建而存在,随着对象的消失而消失
* D:调用不同
* 静态变量可以通过类名调用,也可以通过对象调用
* 成员变量只能通过对 象名调用
code1 这个是静态变量的一个代码,而且这个代码也证实了之前自己的猜测,必须是写了有参构造,才能像数组那样创建对象。
class Demo1_static
{
public static void main(String[] args)
{
student s1;
//s1 = new student("黄色","北京");
s1= new student();
s1.name = "黄色毛衣";
student.province="北京";
s1.show();
}
}
class student
{
String name;
static String province;
public void show(){
System.out.println(name+province);
}
}
code2 这个代码主要是强调静态方法只能访问静态变量。
class Demo2_static
{
public static void main(String[] args)
{
student s;
s = new student();
s.print1();
student.print2();
}
}
class student
{
int num = 2;
//static num1 = 3;
static int num1 = 3;
public void print1(){
System.out.println(num);
System.out.println(num1);
}
public static void print2(){
//System.out.println(num);
System.out.println(num1);
}
}
上面这个图是静态内存图,下面这个图是创建对象内存图
code3 这个是介绍主方法里面一些关键字的 略过
最后一部分 文档说明书
code1 这个是数组类 自己以为可以很轻松的写出来 错了很多,数组的反转是不需要返回值得,自己还写了,然后 for后面跟着的条件中间是分号隔开的,不是逗号隔开的,最后就是max需要先声明 并且赋值 。最后这个代码和之前代码最大的不同是一个开放类,class前面跟着public 为了后面可以访问。
//这个类前面都是public 开放类
public class ArrayTool
{
public ArrayTool(){}
//数组
public static void reverse(int[] arr){
for(int i = 0;i<arr.length/2;i++){
int temp;
temp = arr[i];
//arr[arr.length-1-i]=temp; 这个不能写前面
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
//return arr; 这个反转的方法是不需要返回值类型的 我给写错了
}
//最大值
public static int getMax(int[] arr){
int max = 0;
arr[0]=max;
for(int i = 1;i<arr.length;i++){
if(arr[i]>max){
max = arr[i];
}
}
return max;
}
// 数组的遍历
public static void bianli(int[] arr){
for(int i =0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
}
}
code2 这个是利用前面那个工具类 写了一个测试工具 出错有两个,自己还是要更加透彻的理解方法,方法如果需要传入参数,就要传参数,自己结果在创建对象那个括号传入参数了,这个地方传入参数 必须是有有参构造方法,话说到这来,成员变量赋值的话 其实有三种方式,p.name= 、构造方法、set方法 第二个错误是反转那,自己在写反转方法的时候 竟然还有return语句,还是不熟悉,在测试类做了反转后,不能直接system那里打印,需要再次遍历 自己还是对这个方法一知半解的。
class Demo1_ArrayTool
{
public static void main(String[] args)
{
int[] a = {11,22,33,44,55};
ArrayTool x;
//x = new ArrayTool(a);
x = new ArrayTool();
//int x1 = x.getMax();
//int x1 = x.getMax(a);
//System.out.println(x1);
//x.bianli(a);
x.reverse(a);
//System.out.println(x); 不能这样写,需要再遍历一下
x.bianli(a);
}
}
code3 这个是生成随机数1-100的一个表达式 自己要记住这个书写方法。
class Demo2_Math
{
public static void main(String[] args)
{
System.out.println((int)(Math.random()*100)+1);
}
}
code3 这个没写 感觉说的乱七八糟的,总共5行代码
code4 是一个猜数字的游戏 天啊 我这写的太差劲了 不知道错了多少 键盘输入这个格式自己要搞明白
//import Scanner;
import java.util.Scanner;
class TEST1
{
public static void main(String[] args)
{
//Scanner sc = new Scanner();
//Scanner sc = new Scanner(System.in());
Scanner sc = new Scanner(System.in);
System.out.println("猜吧");
//sc = nextInt(System.in());
//int x = (int)(Math.random*100)+1;
//int x = (int)(Math.randon()*100)+1;
int x = (int)(Math.random()*100)+1;
while(true){
// sc = nextInt(System.in());
// sc = nextInt();
int y = sc.nextInt();
if(y>x){
System.out.println("大了");
}else if(y<x){
System.out.println("小了");
}else{
System.out.println("对了");
break;
}
}
}
}