java当输入一个数字就进行加一操作,Java第二次作业 - osc_zm0p03yr的个人空间 - OSCHINA - 中文开源技术交流社区...
发布日期:2021-08-20 00:42:49 浏览次数:13 分类:技术文章

本文共 3531 字,大约阅读时间需要 11 分钟。

ef3509e385eccb23283026c179c119d7.png

构造方法是一种特殊的方法,与一般的方法不同是:

1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。

2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。

3.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。

方法重载简单说就是同一个方法名,不同的传参。

public void abc()

public void abc(String str)

这两个方法就是重载

构造方法也可以

public abc()

public abc(String str)

程序不能进行编译,因为类里没有构造方法,需要加一个空的构造方法。

a8f68113976d37b260b913114ebf1975.png

37bc139ba135ad46b046782a0cc99b29.png

空指针异常,原因是没有进行实例化

修改如下:

packagenew1;public classtest {public static voidmain(String[] args) {

MyClass[] arr=new MyClass[3];

arr[1]=newMyClass();

arr[1].value=100;

}

}classMyClass{public int value=1;

}

d9cacaa775e9ae35e65971c48d8551ad.png

结果为fales,以为两者虽然赋值相同,但是开辟的数据存储地址不一样。

a3adf34d30b85643f618af6ba90c57df.png

封装性是面向对象的第一大性,所谓的封装性起保护作用是对外部不可见的;

只要是被封装的属性必须通过setter和getter方法设置和取得

属性封装;private属性类型 属性名称;

方法封装;private 方法方法返回值 方法名称(参数列表){}

privateString name;private intage;public voidtell(){

System.out.printin("姓名:"+getName()"年龄:"+getAge());

}publicString getName(){returnname;

}public void setName(intn){

name=n;

}public intgetAge(){returnage;

}public voidsetAge(String a){

age=a;

}public classzuoye{public static voidmain(String args[]){

Person per=newPerson();

per.name="小明";

per.age=21per.tell();

}

3288b3dd29ef58cf9ad7d77af6ccb265.png

74772cbe8c2fee716dbd2c2d2aede341.png

secret是封装性不可直接使用

需要给secfret创建setter和getter.

d29e7ebe649970419aa64119b66625d8.png

aa4d414f219a6b66c6a521943299e458.png

x是非静态常量,内存内没有存入x的值

加static关键字 使"static int x = 50;"

6.使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出测试类代码和Book类的部分代码,将代码补充完整。

classBook{intbookId;

String bookName;doubleprice;//声明静态变量//定义静态代码块对静态变量初始化//构造方法

publicString getBookName() {returnbookName;

}public voidsetBookName(String bookName) {this.bookName =bookName;

}public doublegetPrice() {returnprice;

}public void setPrice(doubleprice) {this.price =price;

}//定义方法求图书总册数//重写toString方法

}public classTest{public static voidmain(String args[]){

Book[] books= {new Book("c语言程序设计",29.3),new Book("数据库原理",30),new Book("Java学习笔记",68)};

System.out.println("图书总数为:"+Book.totalBook());for(Book book:books){

System.out.println(book.toString());

}

}

}

补充完整:

public classBook {intbookId;

String bookName;doubleprice;static int i=1000; //声明静态 变量//定义静态代码块对静态变量初始化

public Book(String bookName,doubleprice) {

i++;this.bookName=bookName;this.price=price;

bookId=i;

}//构造方法

publicString getBookName() {returnbookName;

}public voidsetBookName(String bookName) {this.bookName =bookName;

}public doublegetPrice() {returnprice;

}public void setPrice(doubleprice) {this.price =price;

}public static int totalBook() //定义方法求图书总册数

{return i-1000;

}public String toString() //重写toString方法

{return

"\t 书名:" + this.getBookName() + "\n" +

"\t 价格:" + this.getPrice() + "\n" +

"\t 编号:" + bookId+ "\n";

}

}public classzuoye{public static voidmain(String args[]){

Book[] books={new Book("c语言程序设计",29.3),new Book("数据库原理",30),new Book("Java学习笔记",68)};

System.out.println("图书总数为:"+Book.totalBook());for(Book book:books){

System.out.println(book.toString());

}

}

}

30e6363306f09d0965303b5794164809.png

单个类在使用过程中只有一个实例;

单例类是有自己创建这个实例;

同时为所有对象提供这一实例。

classSun{private static Sun instance = newSun() ;privateSun(){

}public staticSun getInstance(){returninstance ;

}public voidprintf(){

System.out.println("Hello World!");

}public classzuoye{public static voidmain(String arg[]){

Sun s1=Sun getInstance();

Sun s2=Sun getInstance();

s1.print()

s2.print()

}

};

689bd159f70c7bea327c673e677781b8.png

结果为

9ac446e8ce44cf52014d072684952150.pngJava中String型变量传参只传了变量中的内容;

传递到change方法中不能改变空间存放内容。

(二)实验总结

1.类的设计程序:

程序设计思路 利用封装性setter和getter 依次写出日期类、职工类和部门类

再利用方法写出测试类 在以上三个类中赋值。

问题 不理解lenght的使用总是出错;

会定义结构 但不会根据结构取出数据。

解决方法 测试类中不用lenght 直接一个个定义 一个个赋值

08e8b8676b4995f1e9d3ef670717e731.png

2.评分系统:

程序设计思路:利用二位数组的方法,利用循环先输出选手号与成绩让后输出求平均分时同时排序。

问题:不会使用动态数组,往数组里输入数据

在排序求平均分的基础上再求出最小值最大值等对我来说有点难度有点乱所以没能写出来。

3.Email验证

程序设计思路:在主函数中定于输出 ,在定义布尔类型进行调用。

问题:不知道如何定义使"@"在"."之前,以为直接写成"@."即可。

解决方案:email.indexOf("@")

bec6dd2a4ca44b83a56dba6710cf05a6.png

转载地址:https://blog.csdn.net/weixin_31856057/article/details/115790650 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:lbp与matlab gui实现,LBP之matlab实现
下一篇:wordpress customize.php,从wordpress插件覆盖$wp_customize

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年12月28日 10时19分39秒