Java基础静态变量、静态方法
来源:互联网 发布:网络卫生直报平台 编辑:程序博客网 时间:2024/06/09 19:02
- 编写带参方法计算两门课程考试成绩的平均分,通过方法的参数传入成绩信息
public class HelloWorld { public static void main(String[] args) { // 创建对象,对象名为hello HelloWorld hello = new HelloWorld(); // 调用方法,传入两门课程的成绩 hello.calcAvg(94, 81); } /* * 功能:计算两门课程考试成绩的平均分并输出平均分 * 定义一个包含两个参数的方法,用来传入两门课程的成绩 */ public void calcAvg(int a,int b){ double avg=0; // avg = (a + b)/2; //结果是87.0 avg = (a + b)/2.0; // 结果是87.5 System.out.println("平均成绩"+avg); }
output:平均成绩87.5
Q:将考试成绩排序并输出,返回成绩的个数
import java.util.Arrays;public class HelloWorld { public static void main(String[] args) { HelloWorld hello = new HelloWorld(); int[] scores={79,52,98,81}; //调用方法,传入成绩数组,并获取成绩的个数 int count= hello.sort(scores); System.out.println("共有"+count+"个成绩信息!"); } /* * 功能:将考试成绩排序并输出,返回成绩的个数 * 定义一个包含整型数组参数的方法,传入成绩数组 * 使用Arrays类对成绩数组进行排序并输出 * 方法执行后返回数组中元素的个数 */ public int sort( int [] scores ){ Arrays.sort(scores); System.out.println(Arrays.toString(scores)); //返回数组中元素的个数 return scores.length; }}
output:
[52, 79, 81, 98]
共有4个成绩信息!
debug:注意数组参数 int [] scores
Java 重载
判断Java重载的重要依据
- 必须在同一个类中
- 方法名相同
- 方法参数的个数、顺序、类型不同
- 与方法的修饰符或返回值没有关系
public class HelloWorld { public static void main(String[] args) { // 创建对象 HelloWorld hello = new HelloWorld(); // 调用无参的方法 hello.print(); // 调用带有一个字符串参数的方法 hello.print("name"); // 调用带有一个整型参数的方法 hello.print(15); } public void print() { System.out.println("无参的print方法"); } public void print(String name) { System.out.println("带有一个字符串参数的print方法,参数值为:" + name); } public void print(int age) { System.out.println("带有一个整型参数的print方法,参数值为:" + age); }}
output:
无参的print方法
带有一个字符串参数的print方法,参数值为:name
带有一个整型参数的print方法,参数值为:15
Q:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组
要求:
1、 要求通过定义带参带返回值的方法来实现
2、 通过参数传入数组的长度(例如长度为 8),方法执行后返回赋值后的数组
3、 通过 (int)(Math.random() * 100) 生成 100 以内的随机数
注:Math 类是用于进行算术操作的类,Math.random() 生成 0–1 的浮点数。 关于该类的其他应用在后面章节会有详细介绍,先熟悉随机数方法的使用~~
运行效果为: [ 2 , 52 , 8 , 26 , 66 , 32 , 98 , 0 ]
//导入java.util.Arrays;import java.util.Arrays;public class HelloWorld { public static void main(String[] args) { // 创建对象,对象名为hello HelloWorld hello = new HelloWorld(); // 调用方法并将返回值保存在变量中 int[] nums = hello.getArray(8); // 将数组转换为字符串并输出 System.out.println(Arrays.toString(nums)); } /* * 功能:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值 * 定义一个带参带返回值的方法,通过参数传入数组的长度,返回赋值后的数组 */ public int[] getArray(int length) { // 定义指定长度的整型数组 int[] nums = new int[length]; // 循环遍历数组赋值 for (int i=0;i<nums.length;i++ ) { // 产生一个100以内的随机数,并赋值给数组的每个成员 nums[i]=(int) (Math.random()*100); } return nums; // 返回赋值后的数组 }}
output:
[40, 51, 97, 33, 81, 75, 32, 75]
Q:编写一个 JAVA 程序,实现输出考试成绩的前三名
要求:
1、 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73
2、 要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入
3、 要求判断成绩的有效性( 0—100 ),如果成绩无效,则忽略此成绩
import java.util.Arrays;public class HelloWorld { //完成 main 方法 public static void main(String[] args) { int [] scores = { 89 , -23 , 64 , 91 , 119 , 52 , 73}; System.out.println("考试前三名的成绩:"); HelloWorld hello = new HelloWorld(); hello.grade(scores); } //定义方法完成成绩排序并输出前三名的功能 public void grade(int [] scores){ // 线进行排序 Arrays.sort(scores); int count=0; // 使用for循环打印前三名的成绩 for(int i=scores.length-1;i>=0;i--){ // 如果分数是0到100继续 if(scores[i]<0 || scores[i]>100){ continue; } count++; // 数据记录加1 if(count>3){ break; } System.out.println(+scores[i]); } }}
output:
考试前三名的成绩:
91
89
73
构造方法:
当我们有了有参数的构造方法之后,就不能继续调用无参数的构造方法。
有参数构造方法的一个好处,处理传值时的安全问题。因为我可以给一个默认的值给它,通过if语句判断,然后默认赋一个值。
静态成员变量:static 字符定义静态变量,静态变量在创建时就会分配存储空间,只有该类被写在时才会垃圾回收处理。
- 建议通过类名来访问
public class HelloWorld { // 定义静态变量,保存班级名称 static String className = "JAVA开发一班"; public static void main(String[] args) { // 访问静态变量,输出班级名称 System.out.println(HelloWorld.className ); }}
output:JAVA开发一班
- 静态方法:
- 在静态方法中,可以直接调用静态变量,
public class HelloWorld { static String name="imooc"; // 在类中定义静态变量 public static void main(String[]args){ System.out.println(HelloWorld.name); }}
output:
imooc
2. 但是不能调用非静态变量,如果要调用静态变量,申请类对象,然后通过对象调用。
3. 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
public class HelloWorld { String china = "我爱中国"; String hobby = "Imok"; static String name="imooc"; // 在类中定义静态变量 public static void main(String[]args){ // System.out.println(HelloWorld.name); HelloWorld hello = new HelloWorld(); hello.print(); } public void print(){ System.out.println(name); // 在普通成员方法中直接调用静态变量 System.out.println(china); // 在普通成员方法中直接调用非静态变量 System.out.println(hobby); // 在普通成员方法中直接调用非静态变量 }}
- Q
public class HelloWorld { // 定义静态变量score1 static int score1 = 86; // 定义静态变量score2 static int score2 = 92; // 定义静态方法sum,计算成绩总分,并返回总分 public static int sum( ) { return score1 + score2; // 在静态方法中直接使用静态变量 } public static void main(String[] args) { // 调用静态方法sum并接收返回值 int allScore = HelloWorld.sum(); System.out.println("总分:" + allScore); }}
- java 静态变量初始化
static 静态初始化,静态初始化只在类加载时执行,且只会执行一次,同时静态初始化只能给静态变量赋值,不能初始普通成员的变量。
public class HelloWorld { int num1; // 声明变量num1 int num2; // 声明变量num2 static int num3; //声明变量num3 public HelloWorld(){ num1 = 91; System.out.println("通过构造方法为变量num1赋值"); } { // 初始化块 num2 = 91; System.out.println("通过初始化块为变量num2赋值"); } static { // 静态初始化块 num3 = 95; System.out.println("通过静态块为变量num3赋值"); } public static void main(String[]args){ HelloWorld hello = new HelloWorld(); // 创建类对象 System.out.println(hello.num1); System.out.println(hello.num2); System.out.println(num3); HelloWorld hello2 = new HelloWorld(); // 创建类对象hello2,初始化块再次执行 }}
output:
run:
通过静态块为变量num3赋值
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
91
91
95
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
BUILD SUCCESSFUL (total time: 0 seconds)
public class HelloWorld { String name; // 声明变量name String sex; // 声明变量sex static int age;// 声明静态变量age // 构造方法 public HelloWorld () { System.out.println("通过构造方法初始化name"); name = "tom"; } // 初始化块 { System.out.println("通过初始化块初始化sex"); sex = "男"; } // 静态初始化块 static { System.out.println("通过静态初始化块初始化age"); age = 20; } public void show() { System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age); } public static void main(String[] args) { // 创建对象 HelloWorld hello = new HelloWorld(); // 调用对象的show方法 hello.show(); }}
output:
通过静态初始化块初始化age
通过初始化块初始化sex
通过构造方法初始化name
姓名:tom,性别:男,年龄:20
- Java封装实现步骤
- 设置数据变量的访问属性,private
- 通过getter/setter方法,用于属性的读取
- 在getter/setter方法中加入属性控制语句,判断合法性
- get方法名通常为get加上属性关键字
public class HelloWorld { public static void main(String[]args){ Phone iphone = new Phone(); // 一个无参构造方法实例对象iphone iphone.setScreen(6.0f); // 通过封装的方法赋值 // 通过get方法方法获取属性System.out.println(iphone.getScreen()); } }---public class Phone { private float screen; public float getScreen(){return screen;}public void setScreen (float newScreen){ // 不需要返回类型,需要参数传值screen = newScreen;}}
output:
run:
6.0
BUILD SUCCESSFUL (total time: 0 seconds)
封装就是隐藏属性,只能通过特定方法访问属性
- java包的作用
- 管理Java文件
- 解决同名冲突
- 定义包:package.包名(建议全部为小写字母)
- 访问修饰符
- private 同类
- 默认 同类
- protect 同类 子类
- public 任意位置
- Java this关键字
- 本类中的对象引用
- this.属性,调用成员变量。this.方法,调用类成员方法。什么时候使用,当成员变量被局部变量或者参数覆盖的时候,使用this关键字明确引用的是成员变量还是局部变量,还是参数。
- Java基础静态变量、静态方法
- Java基础-静态变量、常量和方法
- JAVA基础:构造方法、静态变量
- Java基础(五)---局部变量、全局变量、静态变量、final变量、静态常量、静态方法
- java静态变量,静态方法,静态类
- 【13】Java基础:java中的静态代码块,静态变量,静态方法
- JAVA 构造方法 静态变量 静态方法
- java基础篇(五)——静态变量、静态方法、静态类
- Java基础静态方法
- java基础-静态方法
- java 静态方法和静态变量 static
- java 静态方法和静态变量 static
- JAVA 静态变量与静态方法
- java的静态方法和静态变量
- Java静态方法,静态变量,初始化顺序
- Java静态方法,静态变量,初始化顺序
- java 静态方法和静态变量 static
- Java静态方法,静态变量,初始化顺序
- 错误:“LNK1169找到一个或者多个重定义的符号”
- 文章标题
- 第十五讲--Oracle存储结构:文件
- Widora MT7688 开发板录音放音使用方法
- [Poj 1426] Find The Multiple BFS
- Java基础静态变量、静态方法
- Windows下CMD命令大全
- 安卓ART与dalvik
- Maven时遇到的一个错误
- 粗糙分析设计模式——单例模式
- picasso Universal-Image-Loader 图片加载简易代码
- Kth Smallest Element in a BST
- Qt之XML学习1
- 【USACO题库】2.1.1 The Castle城堡 题解