网站备案多少天,男女做爰视频网站在线,哪个网站做动图,微山本地有做网站的么练习 1 方法方法定义及调用JShell简单使用#xff08;要求Java9以上#xff09;方法语句流程控制及注意事项选择循环 方法的重载 2 数组三种初始化方式数组在内存中的存储内存图 3 对象对象内存图Getter/Setter快捷写法this 关键字构造方法JavaBean的四个标准对象数组 二、编… 练习 1 方法方法定义及调用JShell简单使用要求Java9以上方法语句流程控制及注意事项选择循环 方法的重载 2 数组三种初始化方式数组在内存中的存储内存图 3 对象对象内存图Getter/Setter快捷写法this 关键字构造方法JavaBean的四个标准对象数组 二、编程练习计算1、流程语句方法的使用用 if 替换三元运算符int max a b ? a : b;switch case 语句判断对错并修改swith case 判断运行结果求1~100之间的偶数和打印一个矩阵用方法 public static void rectangle();打印指定次数hello world带参数方法写重载方法比较两数是否相同参数类型两个byte两个int两个long判断哪些是重载关系 2、数组写3种初始化数组的方式并且分为两步打印数组1自己写数组作为参数 2用系统方法写一个方法将数组中都改为分析下列程序运行过程中内存图存储情况画图改变数组arr1的长度和内容,画内存图求数组中最值数组元素反转 3、对象创建一个Phone类并使用分析内存情况两对象使用同一个成员方法使用对象类型作为方法的参数分析内存图使用对象类型作为方法的返回值分析内存图成员变量和局部变量区别this关键字判断输出结果 4、构造器判断new 对象是否成功及原因 1 方法
方法定义及调用
方法名命名规则和变量一样小驼峰。
public static void 方法名{
方法体
}修饰符 返回值类型 方法名称参数类型 参数名称……{方法体return 返回值
}参数列表逗号隔开 注意 1.方法定义的先后顺序无所谓 2.方法不能嵌套包含 3.方法定义好以后不会执行的如果想执行一定要进行方法的调用。 方法调用
调用方法格式
方法名称JShell简单使用要求Java9以上
注意jshell里不能复制粘贴但可以鼠标选中之前的部分指令然后右键在当前输入行点击会自动粘贴 winR打开搜索cmd 敲
jshell
System.out.println(Hello JShell);
int b 20;
System.out.println(结果是 b * 10);
/exit方法语句流程控制及注意事项
选择
表达式只分true或false
if(表达式){语句
}else{语句
}if(表达式){语句
}else if(表达式){语句
}else if(表达式){语句
}……其中的值只能是基本类型byte/short/int/char,引用类型String字符串enum枚举。 case后的常量必须与的值类型一致其中整型和char可以兼容
switch一个值{case 常量语句break;default: //break;}switch
格式
switch(变量{
case 常量值1语句1break;
case 常量值2语句2break;
case 常量值3语句3break;
case 常量值4语句4break;
default:语句5break;
}穿透的switch语句
多个case后的数不可重复编译错switch小括号内只能是下列数 基本byte/short/char/int 引用String字符串enum枚举格式灵活前后顺序可颠倒break可省略 省略后不会跳出switch直到穿透下一个顺位case有break再跳出
匹配哪一个case就从哪一个位置向下执行直到遇到了break或整体结束
循环
size控制循环次数
for(int i 0; i size; i){语句
}while(表达式){语句
}do{语句
}while(表达式);switch case 匹配到哪一个case就从哪一个位置向下执行直到遇到break或整体结束 三种循环里(for,while,do-while)若条件从未满足do -while 至少会执行一次 在IDEA中delete一个Module外部打开project打开还是存在的怎么导入一个外部保存的Module file-project structure import module setup sdk即可 方法的三种调用形式单独调打印调赋值调。void返回值类型只能单独调 一个方法中可以有多个return但必须保证同时只走一个return ❤重载 多个方法的名称一样但参数列表不一样数据类型or顺序 与参数名称无关与返回值类型无关。调用时通过参数列表区分 break语句在switch中用执行后switch语句结束。在循环中用执行后打破循环 continue语句继续一旦执行立刻跳过当前次循环内容马上开始下一次循环
方法的重载
重载对于功能类似的方法参数列表不同 多个方法的名称一样但参数列表不一样 调用时以不同参数区分
方法重载与下列因素相关 1.参数个数不同 2. 参数类型不同 3. 参数的多类型顺序不同 无关因素 1.与参数名称无关 2.与返回值类型无关
2 数组
三种初始化方式
动态初始化指定长度、静态初始化指定内容、省略式静态初始化 静态初始化可以省略写但不可分为两步写。另外两个可以分为两步写 int[] array1 new int[3];int[] array11;array11 new int[4];int[] array2 new int[]{3,4,5};int[] array22;array22 new int[]{3,4,5};int[] array3 {1,2,3};打印数组的方法 Arrays.toString(arr) 格式[1,2,3]光定义没有new就是没初始化数组一旦创建程序运行期间长度不可改变String也是不会改变属于常量如果改变一定是引用改变了指向的地址数组作为参数和返回值都是传递地址
访问数组元素进行获取直接打印数组名称得到的是数组对应的内存地址哈希值。访问数组名称数组名称[索引值] 访问数组元素进行赋值没赋值默认
整数0 浮点0.0 字符‘\u0000’ boolean false 引用null
数组在内存中的存储内存图
❤方法的运行要进栈存放局部变量方法的参数或者是方法{}内部的变量。局部变量不赋值无法使用没有默认值凡是new出来的东西都在堆当中堆内存中的东西都有一个地址值16进制都有默认值方法区存储.class信息包含方法的信息。
定义数组并赋值时的内存图 int[] arr new int[3];//只规定长度动态初始化System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);arr[1] 10;arr[2] 20;System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);2.两个引用指向同一个数组 //两个引用指向同一个数组的内存图int[] arr2 new int[]{1, 2, 3, 4};System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);System.out.println(arr2[3]);int[] arr3 arr2;System.out.println(arr3[0]);System.out.println(arr3[1]);System.out.println(arr3[2]);System.out.println(arr3[3]);数组一旦创建运行期间不可改变。
int[] arrC new int[3];
arrC new int[5];//长度改变
//等于创建了一个新的数组3 对象
面向过程需要实现一个功能的时候详细处理每一个细节 面向对象找一个已经具有该功能的人来帮我做事
成员变量是直接定义在类当中的在方法外边
对象的创建及使用 1.导包import 包名称.类名称对于和当前类属于同一个包的情况省略导包语句不写。注意使用同一个包下类中的静态方法时若不想写类名.方法名调用要导包import static 包名称.类名称.方法名或*指所有方法。但静态方法中调用非静态方法一定要通过对象调用 2.创建格式 类名称 对象名 new 类名称(); 3.使用对象名.成员变量名对象名.成员方法名参数
对象内存图
一个手机类及其测试练习
public class Phone {public String brand;public double price;public String color;public Phone() {}public Phone(String brand, double price, String color) {this.brand brand;this.price price;this.color color;}//成员方法public void call(String who){System.out.println(给who打电话);}public void sendMessage(){System.out.println(发信息);}
}public class Demo01PhoneOne {public static void main(String[] args) {Phone one new Phone();one.brand 苹果;one.price 8799.0;one.call(小明);one.sendMessage();System.out.println(one.brand);System.out.println(one.price);System.out.println(one.color);}
}运行结果
给小明打电话
发信息
苹果
8799.0
null两个对象使用同一个方法 根据调用方法的顺序依次压栈运行方法栈中后调用的方法在main方法之上main方法没运行完所以还在栈中。若方法体运行完毕则出栈 可见两对象调用同一个方法时不产生任何联系 要产生联系两个对象名称对象的引用名指向同一个对象对象空间即one和two指向的地址相同相当于一个对象两个名称。 使用对象作为方法的参数或返回值同理 传递的都是对象的地址每次new一个对象都在堆中栈中运行方法要赋值或用到对象就赋值为该对象空间的地址根据地址访问到对象空间进行使用。 Getter/Setter快捷写法 Code - Generate或者alt Insert Generate - Constructor 为构造器 - Getter 方法 - Setter 方法 无参构造选 select none全参构造 ctrl多选所有参数
Getter同理生成哪个成员变量的方法选哪个变量。Ctrl多选 this 关键字
当方法的局部变量和累的 成员变量重名时“就近原则”优先使用局部变量要访问本类当中成员变量用 this.成员变量名通过谁调用的方法谁就是this
构造方法
是专门用来创造对象的方法当用new来创建对象时就是在调用构造方法 格式
public 类名称参数类型 参数名称{方法体
}1.构造方法的名称必须和所在类名完全一样 2.构造方法不要写返回值类型void都不写 3.不能return一个具体的返回值可以return;表结束 4.如果没写任何构造方法编译器会默认送一个构造方法没有参数方法体什么都不做 5.一旦编写了至少一个构造方法那么编译器将不再送这个默认无参构造。 6.构造方法可重载
JavaBean的四个标准
所有成员变量都要使用private修饰编写一个无参数的构造方法写一个全参构造器一个无参构造器每一个成员都要写一对getter,setter
对于基础类型boolean写getter方法需要写为isXxx其他都写为getXxxsetter统一写setXxx
对象数组
array[1].getName(); 写法正确根据数组用到对象的方法✔ 二、编程练习计算
1、流程语句方法的使用
用 if 替换三元运算符int max a b ? a : b;
A:
int max;int a 5, b 8;if(a b){max a;}else{max b;}switch case 语句判断对错并修改
String str1 哈哈;String str2 呵呵;char ch 9;switch(ch){case 4:break;case 4:break;case %:break;case str1:break;default:break;}A: String str1 哈哈;String str2 呵呵;char ch 9;switch(ch){case 4: //正确因为字符有ascii码可以互通break;● case 4: //多个case后的数不可以重复break;case %:break;● case str1: //错表达式类型时char case后只能跟char或者整数类型break;default:break;}swith case 判断运行结果 char ch 4;switch(ch){case 4:System.out.println(4);case 5:System.out.println(5);break;case %:break;case 9:System.out.println(9);default:break;}A输出
4
5穿透switch从匹配的case中进入但break才退出
求1~100之间的偶数和
public int evenSum(){int sum 0;for(int i 1; i 100; i){if(i % 2 ! 0){continue;}sum i;}return sum;}打印一个矩阵用方法 public static void rectangle();
public static void rectangle(){for(int i 0; i 8; i){System.out.printf(*);}System.out.println();for(int i 0; i 6; i){//6行System.out.printf(*);for(int j 0; j 6; j){//6列空格System.out.printf( );}System.out.println(*);}for(int i 0; i 8; i){System.out.printf(*);}System.out.println();}打印指定次数hello world带参数方法
A:
public static void helloTime(int times){for(int i 0; i times; i){System.out.println(Hello,World);}}helloTime(5);写重载方法比较两数是否相同参数类型两个byte两个int两个long
A: public static boolean isEquals(byte num1, byte num2){return num1 num2 ? true : false;}public static boolean isEquals(int num1, int num2){return num1 num2 ? true : false;}public boolean isEquals(long num1, long num2){return num1 num2 ? true : false;}System.out.println(isEquals(5,5));//trueSystem.out.println(new Code01().isEquals(345L,1234L));//falsebyte s1 8, s2 0;System.out.println(isEquals(s1, s2));//false判断哪些是重载关系
public boolean isEquals(int num1, byte num2);
public int isEquals(byte num2, int num1);
public void isEquals(int num1, int num2)
public static boolean isEquals(int num1, int num2)
public boolean isEquals(long num1, long num2)public static void open()
public static void open(int a)
stats void open(int a, int b)
public static void open(souble a, int b)
public statc void open(int a, double b)
public void open (int i, double d)
publid static void OPEN()
public static void open(int i, int j)A: 方法重载与下列因素相关 1.参数个数的不同 2.参数类型的不同 3.参数的多类型顺序不同 无关因素 1.与参数名称无关 2.与返回值类型无关
public boolean isEquals(int num1, byte num2)//正确重载
public int isEquals(byte num2, int num1)//正确重载
public void isEquals(int num1, int num2)//错误和第4行冲突
public static boolean isEquals(int num1, int num2)//和第3行冲突
public boolean isEquals(long num1, long num2)//正确7 public static void open()//正确重载
8 public static void open(int a)//正确
9 static void open(int a, int b)//错误与14行冲突
10 public static void open(double a, int b)//正确
11 public statc void open(int a, double b)//错误与12行冲突
12 public void open (int i, double d)//和11行冲突重复方法不是重载
13 publid static void OPEN()//方法名不同不重载独立方法
14 public static void open(int i, int j)//和9行冲突重复方法2、数组
写3种初始化数组的方式并且分为两步
A: 动态初始化即只定义长度后续一个个填充元素内容 int[] arr1 new int[6]; arr[0] 1; arr[2] 8;分两步 int[] arr1; arr1 new int[6]; 静态初始化 int[] arr2 new int[]{3,4, 52 ,54,32};分两步int[] arr2; arr2 new int[]{34,34,32,4}; 静态初始化省略写法int[] arr3 {2,3,4};不可分为两步
打印数组1自己写数组作为参数 2用系统方法
A: 系统的
System.out.println(Arrays.toString(arr3));自己写 for each是只能访问数组元素不能访问下标值 for(int n : arr3){System.out.print(n ,);}System.out.println();for (int i 0; i arr2.length; i) {System.out.print(arr2[i]);if(i arr2.length - 1) {System.out.println();continue;}System.out.printf(,);}写一个方法将数组中都改为
A:注意数组长度在运行期间不可改变但可以改变元素内容 没赋值的数组元素为默认值boolean为false,引用为null字符‘\u0000’ 静态初始化其实也有默认值的过程只不过系统自动马上将默认值替换成了大括号中的具体数值 public static void changeChar(char[] arr){for(int i 0; i arr.length; i){if(arr[i] ){arr[i] ;}}}char[] arr {3,,54,89,~,,34};changeChar(arr);System.out.println(Arrays.toString(arr));分析下列程序运行过程中内存图存储情况画图 char[] arr new char[3];//只规定长度动态初始化arr[1] 9;System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);arr[1] y;
A:
改变数组arr1的长度和内容,画内存图
A: 数组长度不可改变如果改变说明数组引用指向了另一个数组等于创建了一个新的数组 类似如图只是两个数组引用名称指向同一个内存空间 求数组中最值
A: int max arr1[0];for (int i 0; i arr1.length; i) {if(arr1[i] max){max arr1[i];}}数组元素反转
A: int tmp;for (int i 0; i arr1.length/2; i) {tmp arr1[i];arr1[i] arr1[arr1.length - i - 1];arr1[arr1.length - i - 1] tmp;}System.out.println(Arrays.toString(arr1));3、对象
创建一个Phone类并使用分析内存情况两对象使用同一个成员方法
包含属性 品牌价格和颜色两个构造器一个无参一个全参成员方法1.给who打电话2.发信息。 创建两个该对象两对象使用同一个方法调用初始化属性打印并调用方法 画该过程内存图 A:
public class Phone {//包含属性 品牌价格和颜色两个构造器一个无参一个全参成员方法1.给who打电话2.发信息。private String brand;private double price;private String color;public Phone(){}Phone(String brand, double price, String color){this.brand brand;this.price price;this.color color;}public static void call(String who){System.out.println(给 who 打电话);}public static void send(){System.out.println(发短信);}public void setBrand(String brand) {this.brand brand;}public void setPrice(double price) {this.price price;}public void setColor(String color) {this.color color;}public String getBrand() {return brand;}public double getPrice() {return price;}public String getColor() {return color;}
}
public class Demo01Phone {public static void main(String[] args) {//创建两个该对象两对象使用同一个方法调用初始化属性打印并调用方法//画该过程内存图Phone one new Phone();Phone two new Phone(三星, 7999.0, 白);one.setPrice(3999.0);System.out.println(one.getBrand());System.out.println(one.getPrice());System.out.println(two.getBrand());one.call(barbie);two.call(ken);}
} 分析内存中过程 方法区类的.java文件编译后生成.class的字节码文件包含方法的信息
栈方法的运行就是进栈存放局部变量方法的参数或者是方法{}内部的变量。局部变量不赋值无法使用没有默认值。运行语句到调用方法该方法体进栈是对象的方法所以从堆中new的对象里找方法信息堆中方法又从方法区找方法信息。方法运行完毕就出栈再依次执行后续的方法进栈出栈。
堆堆内存的东西都有一个地址值16进制都有默认值 两对象使用同一个成员方法时两对象不产生任何联系。 两个对象要产生联系可以两个对象名称对象的引用名指向同一个对象对象空间。
Phone one new Phone();
Phone two one;使用对象类型作为方法的参数分析内存图 使用对象类型作为方法的返回值分析内存图 public static void method1(Phone param){System.out.println(param.getBrand());System.out.println(param.getPrice());System.out.println(param.getColor());}public static Phone method2(String brand){Phone p new Phone(brand, 0.0, null);return p;}public static void main(String[] args) {//正常生成对象Phone p1 new Phone(华为, 7999.0, 曜石黑);//对象作为方法参数,打印对象的成员变量method1(p1);//对象作为方法返回值Phone p2 method2(苹果);System.out.println(p2.getBrand());}成员变量和局部变量区别
1.定义的位置不一样 局部在方法内部 成员在类中方法外 2.作用范围不一样 局部只有方法中 成员整个类中 3.默认值不一样 局部无默认值 成员有默认值
this关键字判断输出结果
4、构造器
判断new 对象是否成功及原因
不同类的构造器写法
public class Class0 {
}public class Class1 {public Class1() {System.out.println(类Class1的无参构造);}
}
public class Class2 {private Class2(){System.out.println(类Class2的无参构造);}
}public class Class3 {public Class3(){System.out.println(类Class3无参构造);}public Class3(int num){System.out.println(类Class3的有参构造 num);}
}public class Class4 {public Class4(int num){System.out.println(类Class4的有参构造 num);}
}判断new的使用构造器对错
Class0 c0 new Class0();
Class1 c1 new Class1();
Class2 c2 new Class2();
Class3 c3 new Class3();
Class3 c33 new Class3(99);
Class4 c4 new Class4();A: Class0 c0 new Class0();//正确因为啥构造器都没写系统默认一个方法体空的无参构造器Class1 c1 new Class1();//正确输出无参//Class2 c2 new Class2();//错误因为构造器修饰符private只能在类内部使用Class3 c3 new Class3();//正确输出无参Class3 c33 new Class3(99);//正确输出有参//Class4 c4 new Class4();//错误只写了有参构造系统就不默认赠送无参构造就没有无参构造器