学习Java的小体会:
学习了也有段时间了,从开始的考虑报班,到上课,再到论文与Java学习的冲突,无论是心理还是身体都是不小的挑战,从三月开始没有睡过懒觉,每天8点前起床,生物钟都变了,中午不睡觉不会那么困,晚上也从来不会失眠,因为躺倒就睡着了,手机从来也不会因为没电而自动关机。。。经历过就是财富
面向过程思想概述
我们来回想一下,这几天我们完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。
一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。
在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。
那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
面向过程的代表语言:C语言
面向对象思想概述
当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。
可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了。这时就开始思索,
能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。
这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。
典型的懒人思想,但是懒人思想促进社会进步啊;
面向对象思想特点
a:是一种更符合我们思想习惯的思想
b:可以将复杂的事情简单化
c:将我们从执行者变成了指挥者
角色发生了转换
面向对象理解
举例:
洗衣服:换下脏衣服—找盆接水—泡一泡—手搓-----漂清----晾干
面向对象----找个对象(洗衣服)
全自动洗衣机(一键洗衣(调用方法))
生娃—找对象—既要面向对象也要面向过程
面向对象特征
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
面向对象开发
就是不断的创建对象,使用对象,指挥对象做事情。
我们如何描述现实世界事物
举例: 描述学生事物
姓名 , 年龄 , 性别 …
学习 , 吃饭 , 睡觉 …
属性: 就是该事物的描述信息
行为: 就是该事物能够做什么
我们学习编程语言,就是为了模拟现实中的事物,我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。
由此我们就得到了现实中的事物和类的对应关系
事物 ----------------- 类
属性 ----------------- 成员变量
行为 ----------------- 成员方法
类和对象的概念
a:类:是一组相关的属性和行为的集合
b:对象:是该类事物的具体体现
c:举例:
类 学生
对象 班长就是一个对象
案例一:创建人类,实例化类并使用;
import java.sql.SQLOutput;
public class Person { //定义了一个人类
//属性 成员变量
//成员变量要定义在类中方法外
String name = "张三";
int age = 23;
char sex = '男';
//功能 成员方法
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
public void playGame() {
System.out.println("玩游戏");
}
public void talkLove() {
System.out.println("谈恋爱");
}
}
注意:学习成员变量,成员方法,我们创建了一个类;
public class MyTest {
public static void main(String[] args) {
//这个现实世界,他是由事物组成
//事物-----------------类 class
//属性 ---------- 成员变量(成员属性)
//功能 --------- 成员方法(成员功能)
//定义一个类,类体现的就是封装的思想---封装了成员变量和成员方法
//定义一个类使用关键字 class
// 我要定义一个人类
//类是一个抽象的概念,你无法直接使用他的属性和功能,我们要使用该类,那必须要对类进行实例化
//所谓实例化,就是创建该类的对象。如何创建一个类的对象呢?使用关键字new
//创建该类的实例(对象)
Person person = new Person();
//有了对象以后,通过对象调用类中的属性和功能
//获取属性 对象名.属性名
String name = person.name;
int age = person.age;
char sex = person.sex;
System.out.println(name);
System.out.println(age);
System.out.println(sex);
//调用方法 对象名.方法名()
person.eat();
person.sleep();
person.playGame();
person.talkLove();
System.out.println("------------------------");
//一个类可以创建很多对象
Person p2 = new Person();
//设置属性的值
p2.name = "李四";
p2.age = 19;
p2.sex = '女';
//获取属性值
String name1 = p2.name;
int age1 = p2.age;
char sex1 = p2.sex;
System.out.println(name1);
System.out.println(age1);
System.out.println(sex1);
p2.eat();
p2.sleep();
p2.playGame();
p2.talkLove();
}
}
案例二:
创建手机类,实例化并使用;
public class Phone {
//成员变量:定义在类中,方法外
String name = "小米";
double price = 1000;
String color = "白色";
//成员方法
public void call(String name) {
System.out.println("给" + name + "打电话");
}
public void sendMsg(String name, String content) {
System.out.println("给" + name + "发短信,内容是" + content);
}
}
public class MyTest {
public static void main(String[] args) {
//类是一个抽象的概念,你无法直接使用,要使用类中的属性功能,必须创建该类对象
Phone phone=new Phone();
//获取属性 对象名.属性名
String name=phone.name;
double price = phone.price;
String color = phone.color;
System.out.println(name);
System.out.println(price);
System.out.println(color);
//使用功能:对象名.方法名()
phone.call("钟楚红");
phone.sendMsg("惠英红","你是我非常喜欢的一个武打明星");
}
}
案例三:
创建一个学生类并实例化使用;
public class Student {
//成员变量 :不赋值有默认值
String name;
int age;
//成员方法
public int calc(int a,int b){
return a+b;
}
public void playGame(){
System.out.println("玩会游戏");
}
}
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
String name = student.name;
int age = student.age;
System.out.println(name);
System.out.println(age);
int calc = student.calc(10, 10);
student.playGame();
System.out.println(calc);
System.out.println("-----------------------");
Student student1 = new Student();
student1.name = "王五";
student1.age = 255;
System.out.println(student1.name);
System.out.println(student1.age);
int calc1 = student1.calc(100, 100);
System.out.println(calc1);
System.out.println("------------------------------");
Student student2 = new Student();
student2.name = "赵六";
student2.age = 26;
student2.playGame();
}
}
案例四:
创建老师类,实例化使用该类;
public class Teacher {
//定义成员变量
String name="张三";
int age;
//定义成员方法
public void sleep(){
System.out.println("睡觉");
}
public void eat(){
System.out.println("吃饭");
}
}
public class MyTest {
public static void main(String[] args) {
Teacher teacher = new Teacher();
//获取成员变量的值
String name1 = teacher.name;
int age1 = teacher.age;
System.out.println(name1);
System.out.println(age1);
//设置成员变量的值
teacher.name = "雷老虎";
teacher.age = 30;
System.out.println(teacher.name);
System.out.println(teacher.age);
//使用成员功能
teacher.sleep();
teacher.eat();
}
}
public class MyTest2 {
public static void main(String[] args) {
Teacher t1 = new Teacher();
t1.name="赵六";
t1.age=26;
System.out.println(t1.name);
System.out.println(t1.age);
System.out.println("---------------------------");
Teacher t2 = new Teacher();
t2.name = "田七";
t2.age = 27;
System.out.println(t2.name);
System.out.println(t2.age);
}
}
public class MyTest3 {
public static void main(String[] args) {
Teacher t1 = new Teacher();
t1.name = "赵六";
t1.age = 26;
System.out.println(t1.name); // 赵六
System.out.println(t1.age); // 26
Teacher t2 = new Teacher();
t2.name = "田七";
t2.age = 27;
Teacher t3=t1;
t3.name="王老五";
t1.age=100;
System.out.println(t1.name); // 王老五
System.out.println(t1.age); // 100
System.out.println(t2.name); // 田七
System.out.println(t2.age); // 27
System.out.println(t3.name); // 王老五
System.out.println(t3.age); // 100
}
}
import java.sql.SQLOutput;
public class MyTest {
public static void main(String[] args) {
//一个Java文件中,可以定义多个类,有什么注意的,注意 public 只能在一个有main方法的类可以加上,其他类不能加public
Dog dog = new Dog();
dog.show("汤姆");
//变量的访问原则,遵循就近原则:我方法中要访问一个变量,我会先在局部位置找,找到就使用
//如果找不到,我会去成员位置找,找到就使用
}
}
class Dog {
//成员位置
String name = "小花";
public void show(String name) {
//方法的内部和形参都属于局部位置
//String name="aaaa";
System.out.println(name);
System.out.println(this.name);
}
}
注意输出的区别;
案例一:
public class MyTest {
public static void main(String[] args) {
//基本数据类型,作为参数传递,形参的改变,不影响实参
//引用输入类型,作为参数传递,形参的改变,会影响实参
//引用数据类型:数组,类,接口
Dog dog = new Dog();
//如果你以后看到一个方法的形参,要一个类 , 那么你就传一个该类的对象
String name = "小花";
int num = 100;
dog.show(dog, name, num);
System.out.println(dog.name);// kitty
System.out.println(dog.age);// 101
System.out.println(name);// 小花
System.out.println(num);// 100
}
}
class Dog {
String name;
int age;
public void show(Dog dog1, String name, int num) {
System.out.println("这个方法调用了");
name = "kitty";
num = 100 + 1;
dog1.name = name;
dog1.age = num;
System.out.println(name);// kitty
System.out.println(num);//101
}
}
注意 如果你以后看到一个方法的形参,要一个类 , 那么你就传一个该类的对象;
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
int num = 1000;
//传参
Student student1 = new Student();
student.show(student1, num);
System.out.println(student.num);//100
System.out.println(student1.num);//10
}
}
class Student {
int num = 100;
public void show(Student student, int num) {
student.num = 10;
}
}
注意需要画内存图;一画图便知道了;
案例一:
public class Teacher {
int num=100;
public void show(){
System.out.println("我是一个show方法");
}
public void show2() {
System.out.println("我是一个show方法");
}
}
注意创建了一个类;
public class MyTest {
public static void main(String[] args) {
匿名对象
//new Teacher(); //0x0001
Teacher teacher = new Teacher();
teacher.show();
teacher.show();
teacher.show();
teacher.show2();
int num1 = teacher.num;
System.out.println(num1);
//匿名对象调用方法
new Teacher().show(); //每new一次就是一个对象
new Teacher().show2();
new Teacher().show();
new Teacher().show();
//匿名对象调用成员变量
int num = new Teacher().num;
System.out.println(num);
}
}
注意前半段是没使用匿名对象,后半段使用了匿名对象;
案例二:
public class MyTest {
public static void main(String[] args) {
Cat cat = new Cat();
//如果你以后看到一个方法的形参,要一个 类 类型,那么你就传一个该类对象
cat.show(cat, 19);
System.out.println(cat.num);
System.out.println("---------------------");
//匿名对象作为参数传递
//匿名对象可以作为参数传递
cat.show(new Cat(), 20);
System.out.println(cat.num);
}
}
class Cat {
int num = 100;
public void show(Cat cat, int num) {
cat.num = num;
System.out.println(cat.num);//
}
}
注意匿名对象可以作为参数传递;
案例一:
public class Person {
String name;
private int age;
public void setAge(int nianling){
if(nianling>=0&&nianling<=100){
age = nianling;
}else{
System.out.println("设置的年龄不合理");
}
}
public int getAge(){
return age;
}
public void show() {
System.out.println(name);
System.out.println(age);
}
}
注意
public class MyTest {
public static void main(String[] args) {
Person person = new Person();
person.name="张三";
// person.age=23; 私有的成员,外界不能直接访问了
person.setAge(10);
person.show();
System.out.println("---------------------------");
Person person2 = new Person();
//我们通过 对象名.成员变量名=值 这种方式给成员变量设置值
//我们通过 对象名.成员变量名 这种方式,不能排除一些不合理的数据
//我们希望能够对,给成员变量设置的数据进行一些校验。
//那么我们可以屏蔽掉 对象名.成员变量名=值 这种设置方式
//怎么屏蔽掉,可以使用关键字 private
person2.name = "李四";
person2.setAge(100);
//person2.age = 1440; 私有的成员,外界不能直接访问了
person2.show();
System.out.println(person.name);
// int age=person.age;
int age = person.getAge();
System.out.println(age);
}
}
案例二:
public class MyTest {
public static void main(String[] args) {
Tiger tiger = new Tiger();
char sex = tiger.sex;
tiger.show();
}
}
class Tiger {
//private 私有的 是一个权限修饰符,可以修饰成员变量和成员方法,被修饰后,只能在本类中访问,外界无法访问
//public 公共的 是一个权限修饰符,可以修饰类,可以修饰成员变量,可以修饰成员方法,被修饰的成员在任何地方都可以访问
private String name;
private int age;
public char sex;
public void show() {
System.out.println(name);
System.out.println(age);
show2();
}
private void show2() {
System.out.println(name);
System.out.println(age);
}
}
案例三:
public class Student {
private String name;
private int age;
//提供公共的set方法,让外界调用set方法来给成员变量设置
public void setName(String mingzi) {
name = mingzi;
}
public void setAge(int nianling) {
age = nianling;
}
//提供get方法,让外界通过get方法,来获取成员变量的值
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void sleep() {
System.out.println("睡觉");
}
public void eat() {
System.out.println("吃饭");
}
}
public class MyTest {
public static void main(String[] args) {
Student student = new Student();
student.setName("张三");
student.setAge(20);
String name = student.getName();
int age = student.getAge();
System.out.println("姓名:" + name + "=== 年龄" + age);
student.eat();
student.sleep();
System.out.println("-------------------");
Student student1 = new Student();
student1.setName("李四");
student1.setAge(24);
String name1 = student1.getName();
int age1 = student1.getAge();
System.out.println("姓名:" + name1 + "=== 年龄" + age1);
student1.eat();
student1.sleep();
}
}
案例四:
public class Teacher {
//私有成员变量
private String name;
private int age;
//提供公共的set方法
public void setName(String mz) {
name = mz;
}
public void setAge(int nl) {
age = nl;
}
//提供的公共的get方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void teache() {
System.out.println("教书");
}
}
public class MyTest {
public static void main(String[] args) {
Teacher teacher = new Teacher();
//通过set方法,来给成员变量设置值
teacher.setName("沈某某");
teacher.setAge(18);
//通过get方法来获取值
String name = teacher.getName();
int age = teacher.getAge();
System.out.println(name);
System.out.println(age);
}
}
案例五:
public class Doctor {
//私有化成员变量
private String name;
private int age;
//提供的公共的set方法
public void setName(String mz) {
name = mz;
}
public void setAge(int nl) {
age = nl;
}
//提供公共的get方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void 看病() {
System.out.println("看病");
}
}
public class MyTest {
public static void main(String[] args) {
Doctor doctor = new Doctor();
doctor.setName("沈某某");
doctor.setAge(20);
String name = doctor.getName();
int age = doctor.getAge();
System.out.println(name);
System.out.println(age);
doctor.看病();
}
}
案例六:
public class Teacher {
//私有成员变量
private String name;
private int age;
//提供公共的set方法
public void setName(String name) { //成员变量和局部变量重名了
System.out.println("this代表的那个对象" + this);
this.name = name;
//teacher.name=name;
}
public void setAge(int age) { //成员变量和局部变量重名了
System.out.println("this代表的那个对象" + this);
this.age = age;
}
//提供的公共的get方法
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public void teache() {
System.out.println("教书");
}
}
import com.sun.media.sound.SoftTuning;
public class MyTest {
public static void main(String[] args) {
Teacher teacher = new Teacher();
System.out.println("teacher的地址值" + teacher);
//通过set方法,来给成员变量设置值
teacher.setName("沈某某");
teacher.setAge(18);
//通过get方法来获取值
String name = teacher.getName();
int age = teacher.getAge();
System.out.println(name);
System.out.println(age);
//this:代表本类的一个引用,你可以理解为本类的一个对象,哪个对象调用某个方法,那么方法中的this就代表这个对象
System.out.println("--------------------");
Teacher teacher1 = new Teacher();
System.out.println("teacher1" + teacher1);
teacher1.setName("王五");
teacher1.setAge(25);
String name1 = teacher1.getName();
int age1 = teacher1.getAge();
System.out.println(name1);
System.out.println(age1);
}
}
案例七:
public class Phone {
private String name;
private double price;
//快速生成 get set 方法 alt+inset 弹出一框 选 getandset
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public void call() {
System.out.println("打电话");
}
}
注意:学习快捷键的使用alt+insert;
案例八:
public class MyTest {
public static void main(String[] args) {
A a = new A();
System.out.println(a);
int num=10;
a.show(num,a);
System.out.println(num); //3 10
}
}
class A{
int num=100;
public void show(int num, A a){
System.out.println(this);
System.out.println(num); //
System.out.println(a.num); //
System.out.println(this.num);
System.out.println(a==this);
}
}
案例一:
public class Student {
private String name;
private int age;
//构造方法:方法名和类名相同,没有返回值类型,连void 也没有
//我们自定义的一个类中,默认就会存在一个空参的构造方法
//构造方法,就是用来初始化这个类的,完成对类的实例化
public Student() {
System.out.println("空参的构造方法执行了");
}
public Student(String name) {
System.out.println(name);
System.out.println("一个参数的构造方法,执行了");
}
public Student(String name, int age) {
//System.out.println(name);
//System.out.println(age);
System.out.println("两个参数的构造方法,执行了");
this.name = name;
this.age = 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 class MyTest {
public static void main(String[] args) {
//类,是一个抽象的概念,不能直接使用,要使用类中的属性和功能,必须对类进行实例化
// 我们可以使用关键字new
//我们在创建对象时,除了使用关键字new 之外 还得借助构造方法,来完成对类的实例化。
//借助空参的构造方法创建对象
Student student = new Student();
//借助有参的构造方法,创建对象
//Student student1 = new Student("zhangsan");
Student student2 = new Student("lisi", 24);
//System.out.println(student2.name);
//System.out.println(student2.age);
}
}
public class MyTest2 {
public static void main(String[] args) {
//采用空参构造来创建对象
Student student = new Student();
student.setName("zhangsan");
student.setAge(13);
System.out.println(student.getName());
System.out.println(student.getAge());
System.out.println("--------------------------------");
//采用有参构造来创建对象,在创建对象的同时,就可以给成员变量赋值
Student student1 = new Student("wangwu", 25);
System.out.println(student1.getName());
System.out.println(student1.getAge());
}
}
案例二:
public class MyTest3 {
public static void main(String[] args) {
//构造方法的注意事项:
//1.我们自定义的类中,默认存在一个空参构造,但是如果我们手动写出了有参构造,那么默认的空参构造就没有了
//如果你还想要使用空参构造来创建对象,建议你手动写出来,也建议你永远手动写出来
Dog dog = new Dog();
Dog dog2 = new Dog(2);
}
}
class Dog{
public Dog(){}
public Dog(int a){
}
}
案例三:
public class Teacher {
//一个类,有什么组成: 构造方法,成员变量,成员方法
//私有化成员变量
private String name;
private int age;
//提供有参,无参数构造
public Teacher() {
}
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
//提供公共的 get set 方法
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 void teache() {
System.out.println("教书");
}
}
public class MyTest {
public static void main(String[] args) {
//使用空参构造来创建对象
Teacher teacher = new Teacher();
teacher.setName("沈某某");
teacher.setAge(18);
System.out.println(teacher.getName());
System.out.println(teacher.getAge());
System.out.println("------------------------------");
//使用有参构造来创建对象
Teacher teacher1 = new Teacher("沈员外", 35);
System.out.println(teacher1.getName());
System.out.println(teacher1.getAge());
}
}
案例四:
public class Dog {
private String name;
private int age;
//提供空参构造,有参构造
public Dog() {
}
public Dog(String name, int age) {
this.name = name;
this.age = 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 void lookDoor() {
System.out.println("狗看门");
}
public void show() {
System.out.println("姓名" + name + "===年龄:" + this.age);
}
}
public class MyTest {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("旺财");
dog.setAge(1);
int age = dog.getAge();
String name = dog.getName();
System.out.println("名字"+name+"== 年龄"+age);
dog.lookDoor();
dog.show();
System.out.println("-----------------");
Dog dog1 = new Dog("小白", 2);
System.out.println(dog1.getName());
System.out.println(dog1.getAge());
dog1.show();
dog1.lookDoor();
}
}
案例五:
public class Phone {
private String name;
private double price;
private double weight;
public Phone() {
}
public Phone(String name, double price, double weight) {
this.name = name;
this.price = price;
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public void call() {
System.out.println("打电话");
}
}
案例六:
public class Student {
private String name="张三";
private int age=10;
public Student(String name, int age) {
this.name = name;
this.age = 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 void show(){
System.out.println(name+"==="+age);
}
}
public class MyTest {
public static void main(String[] args) {
Student s = new Student("王五", 25);
//:画图演示
//画图说明一个对象的创建过程做了哪些事情 ?
// Student s = new Student();
//步骤:
//(1): 加载Student.class文件进内存
// (2):在栈内存为s开辟空间
// (3):在堆内存为学生对象开辟空间
// (4):对学生对象的成员变量进行默认初始化
// (5):对学生对象的成员变量进行显示初始化
// (6):通过构造方法对学生对象的成员变量赋值
// (7):学生对象初始化完毕,把对象地址赋值给s变量
//A:
//案例演示
//需求:
//定义一个长方形(RectangleDemo) 类, 定义求周长(length) 和面积(area) 的方法,
// 然后定义一个测试类Test,进行测试。
// 类 属性
}
}
案例七:
public class Rectangle {
//定义属性
private double width;
private double height;
//提供构造方法
public Rectangle() {
}
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
//提供get set 方法
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
//提供获取周长的方法
public double getPerimeter() {
return (width + height) * 2;
}
//提供获取面积的方法
public double getArea() {
return width * height;
}
}
public class MyTest {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle();
rectangle.setHeight(100);
rectangle.setWidth(200);
double perimeter = rectangle.getPerimeter();
double area = rectangle.getArea();
System.out.println("面积是"+area+"==周长是"+perimeter);
System.out.println("-------------------");
Rectangle rectangle1 = new Rectangle(10.3, 190.6);
double perimeter1 = rectangle1.getPerimeter();
double area1 = rectangle1.getArea();
System.out.println("面积是" + area1 + "==周长是" + perimeter1);
}
}
案例一:
public class Person {
public String name;
//我想让中国这个数据变成共享变量,让这个类的所有对象,都能够共享他
// 我们可以使用一个关键字,static 静态的 可以修饰成员变量,和成员方法
//被static所修饰的成员变量,是一个共享变量,被类的所有对象所共享
//被静态所修饰的成员,是随类的加载而加载(随着 .class文件进内存,静态的东西就会加载)
//优先于对象而存在
public static String country = "中国";
}
public class MyTest {
public static void main(String[] args) {
//想让中国,让这个三个对象共享
Person person = new Person();
person.name="张三";
person.country="美国";
System.out.println("---------------");
Person person2 = new Person();
person2.name = "李四";
person2.country = "新加坡";
System.out.println("---------------");
Person person3 = new Person();
person3.name = "王五";
person3.country = "英国";
System.out.println(person.name+"----"+person.country);
System.out.println(person2.name + "----" + person2.country);
System.out.println(person3.name + "----" + person3.country);
}
}
注意输出结果为;
张三----英国
李四----英国
王五----英国
public class MyTest {
public static void main(String[] args) {
// A a = new A();
//通过对象名.共享变量名 这种方式,去访问共享变量,不推荐使用
//int b = a.b;
//被static 所修饰的我们推荐使用类名直接调用
//因为静态变量,属于类,所以使用类名直接调用即可
A.b=500;
int b = A.b;
System.out.println(b);
//a.show();
A.show();//静态方法,推荐使用类名直接调用
}
}
class A{
double a=100;
static int b=1000; //共享变量
public static void show(){
System.out.println("这是一个静态的show方法");
}
}
案例三:
public class MyTest {
public static void main(String[] args) {
//在静态方法里面,只能访问静态变量,非静态变量访问不到 先存在的访问不到后存在
//在非静态方法里面,既可以访问静态的,也可以访问非静态的
}
}
class B{
int a=10;
static double num=100;
//非静态方法
public void show(){
System.out.println(a);
System.out.println(num);
}
//静态方法
public static void staticShow(){
//System.out.println(a);
System.out.println(num);
}
//非静态方法里面,既可以访问静态方法,也可以访问非静态方法
public void test() {
this.show();
staticShow();
}
//静态方法,只能访问静态方法
public static void test2() {
//this.show();
staticShow();
}
public static void test3() {
//静态方法里面,不能存在this this代表一个对象,对象还是后来有的,先有的,不能访问后来有的
// int aaa=this.a;
}
}
案例四;
package org.westos.demo4;
/**
* @Author: Administrator
* @CreateTime: 2019-04-06 16:01
*/
public class MyTest {
//成员变量
int num = 100;
//共享变量
static int aa = 1000;
public static void main(String[] args) {
// 权限修饰符 static 返回值类型 方法名(){}
show();
// show2();
// System.out.println(num);
System.out.println(aa);
MyTest myTest = new MyTest();
myTest.show2();
System.out.println(myTest.num);
MyTest.show();
}
//静态成员方法
public static void show() {
System.out.println("aaaaaaa");
}
//非静态成员方法
public void show2() {
System.out.println("aaaaaaa");
}
}
打开JDK提供的帮助文档学习
案例:
public class MyTest {
public static void main(String[] args) {
// Math 关于数学运算 方面的工具类 他所有的成员变量和成员方法,都是静态所修饰的。我们可以通过类名直接调用
//random() 生成随机消失 范围 0---1 之间
// java.lang 包下的类,可以不用导包
//for (int i = 0; i < 1000; i++) {
// double random = Math.random();
// System.out.println(random);
//}
//我想要要一个 随机整数 范围是 1----100 包含 1 和 100
for (int i = 0; i < 1000; i++) {
int random = (int) (Math.random() * 100 + 1);
System.out.println(random);
}
}
}
案例二:
猜数字小游戏(数据在1-100之间)
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
int num = (int) (Math.random() * 100 + 1);
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数,范围 1---100 包含1和100");
while (true){
int userNum = sc.nextInt();
if (userNum > num) {
System.out.println("猜大了");
} else if (userNum < num) {
System.out.println("猜小了");
} else if (userNum == num) {
System.out.println("恭喜你!猜对了");
break;
}
}
}
}
案例三:
给10次机会 提示剩余的次数,10次猜不对程序结束
package org.westos.demo;
import java.util.Scanner;
public class GuessNumberzi {
public static void main(String[] args) {
int num=(int)(Math.random()*100+1);
Scanner sc = new Scanner(System.in);
int j=10;
while (j>0){
System.out.println("请输入一个整数,范围1-100");
int userNum=sc.nextInt();
if (userNum > num) {
System.out.println("猜大了");
} else if (userNum < num) {
System.out.println("猜小了");
} else if (userNum == num) {
System.out.println("恭喜你!猜对了");
break;
}
j--;
System.out.println("你还剩"+j+"次机会");
if (j==0){
System.out.println("game over");
}
}
}
}