Изучение Java, день6 (модель памяти JVM знакомство и т.д.)
Java ... с уникальным способом , чтобы передать переменное число параметров, таких параметров с использованием массива , используя один и те же
* Если параметр не может заполнить
* ... Представитель такого множества параметров может быть передан в 0
* , если метод имеет множество параметров, переменная параметр (этот параметр ...) все параметры должны быть помещены в прошлом
* ПРИНТИНФО (String с, INT д , строка ... арг) режим таким образом , является параметром
* Принтинфо (String s, строка ... арг, внутр г) в таком параметре режима образом неправильно
* Принтинфо (String ... арг, String s, внутр d) таким параметром режима образом неправильно
public void printInfo1(String... args) { //创建方法
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
public class Test3 {
public static void main(String[] args) {
Person2 p2 = new Person2();
p2.printInfo1("lisi","23","男");//使用...的方式直接调用
String[] ss2 = new String[] {"北京市","131111111","3213241111111111"};
p2.printInfo1(ss2);//创建数组的时候也可以调用
}
Память модель виртуальной машина Java
стека стека
базового типа данных (INT, символ, логическое значение, и т.д.), ссылка (адрес объекта) объект
стека кучи
все объекты ( в том числе объектов и их определение строки объект)
метода Метод зоны
каждый класс и статические переменные
Предположим , что р = Person нового человека ()
стека хранится в куче нового человека () объекта
в куче адрес BExxxxx.
Стек хранится в стеке адрес AGxxxx р, но содержимое хранится
новое лицо (объект) в адрес кучи BExxxxx
Пусть INT = 1 ,
сохраненного в стеке значение AGxxxxx I, 1
Основные типы данных, значение, сохраненное в стеке, эталонного объекта, значение, сохраненное в стеке, стек хранится в адрес объекта кучи.
Параметр прохождения метод: ссылка на объект
public class DataSwap {
public int a;
}
public class Test5 {
public static void swap(DataSwap ds1) {
ds1.a = 6;
System.out.println("在swap方法中,ds1.a的值是:" + ds1.a);
}
public static void main(String[] args) {
//把new Dataswap()存到了堆内存中,假设地址为BE0001
//ds引用对象存到栈中,假设地址是AD0001,值是new
DataSwap ds = new DataSwap();
System.out.println("调用swap方法之前,ds.a的值是:" + ds.a);
//调用swap方法,给ds1引用对象保存到栈中,假设地址是AD0002,存的值是来自与实参(ds),也就是ds的站中存的值
//这个值实际上就是之前 new DataSwap()对象在堆内存中的地址
swap(ds);
System.out.println("调用swap方法之后,ds.a的值是:" + ds.a);
}
}
Результат
перед свопом вызова метода, ds.a значения: 0
в процессе обмена, значение ds1.a: 6
после того, как метод подкачки вызова ds.a значение: 6
Упаковка и скрытие
с использованием личного контроля логики, и использовать getXxx () и SetXXX () для работы
Q1: класс дизайна животных, а также информации , скрытие ноги
скрытого дизайна до того , когда число вход произвольного число ног
public class Animal {
public int legs;
public void printLegs() {
System.out.println("legs: " + legs);
}
public int getLges(int t) {
return legs = t;
}
public void eat(String eat) {
System.out.println("Eating:" + eat);
}
public void move(String move) {
System.out.println("Moving:" + move);
}
}
public class Zoo {
public static void main(String[] args) {
Animal xb = new Animal();
xb.getLges(6);
xb.printLegs();
xb.eat("气球");
xb.move("飞");
}
}
Дизайн шкуры, ноги не может превышать 6. большой не меньше, чем минимум 2
public class Animal {
private int legs;
public void printLegs() {
System.out.println("legs: " + legs);
}
public void eat(String eat) {
System.out.println("Eating:" + eat);
}
public void move(String move) {
System.out.println("Moving:" + move);
}
public void setLegs(int a) {
if(a <= 6 && a >= 2) {
legs = a;
}else{
System.out.println("您输入的值不正确");
}
}
}
Когда входное значение, если оно больше, чем на 6 меньше, чем 2, печать: Значение, которое вы ввели неверный
public class Zoo {
public static void main(String[] args) {
Animal xb = new Animal();
xb.setLegs(-1000);
xb.printLegs();
xb.eat("气球");
xb.move("飞");
}
}
Q2: подготовка двух классов и треугольное TestTriAngle, в котором объявлена собственной треугольника ` длину базовой и базовую большую высоту,
заявление , что доступ общественности к частной переменной, другой класс этих общих методов , используемых для расчета площади треугольника.
public class TriAngle {
//声明私有的base和height
private int base;
private int height;
//使用setArea()声明公共方法访问私有变量
public void setArea(int b,int h) {
base = b;
height = h;
}
//使用getBase(),getHeight(),getArea()声明公共方法访问私有变量
public void getBase() {
System.out.println("base: "+ base);
}
public void getHeight() {
System.out.println("height: " + height);
}
public void getArea() {
System.out.println("area= "+ (base * height) / 2);
}
}
public class TestTriAngel {
public static void main(String[] args) {
//使用公共方法,计算三角形的面积
TriAngle t = new TriAngle() {};
t.setArea(7, 9);
t.getBase();
t.getHeight();
t.getArea();
}
}
Перегруженный конструктор
конструкторы и методы, как метод вариации. Конструктор перегрузки Перегрузка с тем же способом , как: имя метода, число параметров или типов параметров не является одинаковым.
Q3:
public class Person {
String name;
int age;
String school;
String major;
public Person(String n, int a) {
name = n;
age = a;
}
public Person(String n, int a,String s) {
name = n;
age = a;
school = s;
}
public Person(String n, int a,String s,String m) {
name = n;
age = a;
school = s;
major = m;
}
public static void main(String[] args) {
Person one = new Person("zhangsan",18);
System.out.println("one的姓名是: " + one.name + "\n" + "年龄是: " + one.age);
Person two = new Person("lisi",18,"ailisidun");
System.out.println("two的姓名是: " + two.name + "\n" + "年龄是: " + two.age + "\n" + "学校是: " + two.school);
Person thr = new Person("wangwu",17,"ailisidun","zuosi");
System.out.println("thr的姓名是: " + thr.name + "\n" + "年龄是: " + thr.age + "\n" + "学校是: " +thr.school + "\n"+ "专业是: " + thr.major);
}
}
JavaBean
JavaBean код следующие
три группы набор ПОЛУЧИТЬ
public class Person2 {
private String name;
private int sex;
private int age;
public void steName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setSex(int sex) {
this.sex =sex;
}
public int getSex() {
return this.sex;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}
Вызов метода
public class test {
public static void main(String[] args) {
Person2 p2 = new Person2();
p2.steName("zhangsan");
p2.setSex(0);
p2.setAge(20);
System.out.println(p2.getName());
System.out.println(p2.getSex());
System.out.println(p2.getAge());
}
}
После определения частной собственности, вы можете щелкнуть правой кнопкой мыши на источник → Сформировать Геттеры и сеттеры
может автоматически генерировать код для бина
Сегодня немного сложнее, слушать немного устал, это содержание изучил пять часов, заполняя его завтра.