首先理解public boolean addBook(Book book )这句话的含义是创建一个大家都能使用的公共方法(public的作用),该方法返回一个布尔类型的值(boolean的作用),该方法的名字是addBooke(调用方法需要名字啊,没名字怎么用它),这个方法需要的参数是一个Book类型的对象book(Book book的作用);
在灵丘等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、网站制作 网站设计制作定制网站,公司网站建设,企业网站建设,品牌网站设计,全网整合营销推广,成都外贸网站建设公司,灵丘网站建设费用合理。
每一个方法都有一个方法签名:方法签名就是方法名和参数列表(在这里就是 addBook(Book book))通过方法签名我们就能正确的找到并执行该方法;
方法名,顾名思义就是方法的名字,一个类中可以有很多相同方法名的方法,就拿addBook来所,是添加书,添加书的渠道很多,可以通过书名添加,也可以通过id添加,只不过执行的逻辑和需要的参数不同;所以一个类中可以有很多的同名方法,那么程序如何区分这些方法呢?那就是通过方法签名的另一个元素——参数列表,在java中称方法名相同,参数列表不同的情况为方法的重载;
这位大哥问的就是参数列表的问题,参数列表中需要的是参数的数据类型,和一个引用来临时在方法中保存用户给的数据;这里Book就是数据类型,book就是一个临时的引用在方法体内可以代表用户给的数据的;这里有需要有栈桢和堆的概念了,在没有这些基础知识的时候我们只要知道,book是一个引用,在方法体中我么可以使用book来操作一个不属于我们的外部对象;
纯手打望采纳;
请采纳啊,不明白的在追问,谢谢。
//声明包
package cn.jbit.classandobject;
//导入包
import java.util.Scanner;
/**
* 上机阶段4:登录并购买商品
*/
// 声明类Goods
public class Goods
{
// 声明String类型的数组:goods,并初始化。
String[] goods = new String[] { "电风扇", "洗衣机", "电视机", "冰 箱", "空调机" }; // 定义数组是干什么用的
// 声明double类型的数组:price,并初始化。
double[] price = new double[] { 124.23, 4500, 8800.90, 5000.88, 4456,
12000.46 };
// 声明返回值类型为:boolean的login()方法
public boolean login()
{
// 声明变量flag,类型为boolean,初始值为:false,作为是否登录成功的标志
boolean flag = false;
// 键盘输入
Scanner input = new Scanner(System.in);
// 打印
System.out.print("请输入用户名: ");
// 声明变量name,接收输入用户名
String name = input.next();
// 打印
System.out.print("请输入密码: ");
// 声明变量pwd,接收输入密码
String pwd = input.next();
// if判断用户名和密码是否正确
if (name.equals("TOM") pwd.equals("123"))
{
// 打印
System.out.println("登录成功! ");
// 修改是否登录成功的标志
flag = true;
}
// else情况
else
{
// 打印
System.out.println("用户名或密码不匹配,登录失败!");
}
// 返回是否登录成功的标志:成功(true),失败(false)
return flag;// 这段代码为什么要加返回值
}
// 声明返回值为StringBuffer类型的方法change(double d),参数为double类型的d
public StringBuffer change(double d)// 这是什么意思啊
{
// StringBuffer str:声明StringBuffer类型的变量str
// String.valueOf(d):获取d的字符串值
// new StringBuffer(String.valueOf(d)):实例化str,调用了StringBuffer的构造方法
StringBuffer str = new StringBuffer(String.valueOf(d));// 这一句
// str.indexOf("."):返回第一个.所在位置:如果该值返回大于等于4,则进入for循环,否则跳过
for (int i = str.indexOf(".") - 3; i 0; i = i - 3)
{// 这一句
// 在i出添加,如8,800.9
str.insert(i, ',');// 还有这一句
}
// 返回StringBuffer类型的字符串
return str;
}
// 声明返回值为void的方法showGoods()
public void showGoods()
{
// 打印
System.out.print("*********欢迎进入商品批发城*********");
// 打印
System.out.print("\n\t编号\t商品\t价格\n");
// for循环输出商品:goods.length用到开始声明的goods来获取数组长度
for (int i = 0; i goods.length; i++)
{
// 打印:因为数组从0开始,而商品只能从1开始,所以i+1。\t制表符
System.out.print("\t" + (i + 1));
// 打印第i个商品
System.out.print("\t" + goods[i]);
// 打印第i个商品的价格。\n回车
System.out.print("\t" + change(price[i]) + "\n");
}
// 打印
System.out.println("**********************************");
}
// 主方法
public static void main(String[] args)
{
// 键盘输入
Scanner input = new Scanner(System.in);
// 声明Goods类的对象g,并实例化
Goods g = new Goods();
// 声明int变量serial, num
int serial, num;
// 声明double变量total
double total = 0;
// 判断是否登录成功
if (g.login())
{
// 打印商品信息
g.showGoods();
// 输入商品编号
System.out.print("请输入您批发的商品编号:");
// 接收
serial = input.nextInt();
// 输入批发数量
System.out.print("请输入批发数量:");
// 接收
num = input.nextInt();
// 计算总金额:price数组是从0开始的,商品数量是从1开始,第一个商品对应第0个价格
total = g.price[serial - 1] * num;// 计算总金额 //这一句
// 打印总金额
System.out.print("您需要付款:" + g.change(total));
}
}
}
保证hashCode 不同的算法,很多人都研究这个算法,算法很多
这个怎么保证的我不知道
但是我可以给你解释下算式
int 是4位byte的 4*8=32bit 一也注意到了12+20=32
h ^= (h 20) ^ (h 12);意味着h=h的前12位不变+中间的8位位中间的8位和前8位异或值+后12位为后12位和前间12位和9-20位的异或值(+不是加法是连接,一共32位)
h ^ (h 7) ^ (h 4); 之后再用类似的方式
新h=前4位不变+前3位和5-7位异或值+前25位和后25位和4-28位的异或值
应该是没写过java代码吧!
写个最简单的给你分析下
public class ClassName{
public ClassName(){}
public static void main(String args[]){
System.out.println("Hello World!");
}
}
上面代码分析:public、 class 、static、void 都是java语言的关键字
通过关键字pubic class 定义一个名字为ClassName的公共的类;
第二行是构造函数;
第三行是主函数(程序入口);
第四行是在控制台输出Hello World!;其中System是java提供的API函数;
复杂去了。。。。