java中的方法(c语言中函数):做一件事的流程
方法好处:提高代码的复用性,简化开发,提高开发效率
创建方法的建议:方法=工具
一般会将一套固定的流程,抽出来,定义成方法
例如乔峰打一条降龙十八掌:
- 扎马步
- 双手摊开
- 手左右推几下
- 手上下推几下
- 向前推
public static void main(String[] args) {
System.out.println("乔峰走在路上,遇见鸠摩智");
System.out.println("~扎马步");
System.out.println("~双手摊开");
System.out.println("~手左右推几下");
System.out.println("~手上下来回翻滚");
System.out.println("~向前推");
System.out.println("一条龙出来把鸠摩智打死了");
System.out.println("乔峰走在路上,遇见慕容复");
System.out.println("~扎马步");
System.out.println("~双手摊开");
System.out.println("~手左右推几下");
System.out.println("~手上下来回翻滚");
System.out.println("~向前推");
System.out.println("一条龙出来把慕容复打死了");
}
从上面代码可以看出我们可以把重复的步骤抽出来,定义一个方法
如下所示:
public static void main(String[] args) {
System.out.println("乔峰走在路上,遇见鸠摩智");
xianglongshibazhang();
System.out.println("一条龙出来把鸠摩智打死了");
System.out.println("乔峰走在路上,遇见慕容复");
xianglongshibazhang();
System.out.println("一条龙出来把慕容复打死了");
}
/*
* 方法
* 规定释放降龙十八掌的过程
* */
public static void xianglongshibazhang() {
System.out.println("~扎马步");
System.out.println("~双手摊开");
System.out.println("~手左右推几下");
System.out.println("~手上下来回翻滚");
System.out.println("~向前推");
}
创建方法的格式:
public static 返回值类型 方法名 (参数列表){
}
返回值类型:执行方法后,返回值的类型 无返回值时加void
方法名:方便在后面找到此方法,命名的方式和变量名命名方式一样
参数列表:执行此方法需要以来的第三方数据
尝试自己做一些简单方法 :
如下:
- 加法运算
- 圆的面积
- 矩形的面积
public static void main(String[] args) {
int result = add(4, 6);//add
double as=area(2);//圆面积
int as1=area(2,3);
System.out.println("两数相加和:"+result);
System.out.println("圆面积:"+as);
System.out.println("长方形面积:"+as1);
}
/**
* 计算两个数之和
* @param num1
* @param num2
* @return
*/
public static int add(int num1, int num2) {
return num1 + num2;
}
/**
* 计算圆的面积
*/
public static double area (double r) {
return r*r*3.14;
}
/**
* 定义一个计算矩形面积的方法
*/
public static int area(int w,int h) {
return (w+h)*2;
}
一个用java写的爬虫代码,爬取的是王者官网的英雄图片,可以尝试理解下
package day08;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* 爬虫:从王者荣耀官网上爬取图片
*@author DEYOU
*/
public class GetImg {
/**
* 根据网址,获取对应网址上的图片
*
* @param url
*/
static String url="https://pvp.qq.com/web201605/herolist.shtml";
//设置下载位置
static String path="d://img/";
//加载对应网址上的html代码
public static void getImg(String url){
try {
Document document=Jsoup.connect(url).userAgent("Mozilla/4.0(compatible;MSIE 9.0;Windows NT 6.1;Trident/5.0)").get();
//System.out.println(doucument);
//获取显示图片的ul标签
Elements selecUL=document.select("[class=herolist clearfix]");
//在ul标签中查找li标签
Elements selectLI=selecUL.select("li");
//for循环,遍历所有的li标签,获取详情页面地址,以及头像
//forEach
//Element:元素(标签) 代表着,html中显示内容标签
for (Element e:selectLI) {
//找到英雄详情页的地址
//从li标签中找到a标签并且获取里面的href属性值
String heroURL=e.select("a").attr("href");
//System.out.println(heroURL);
//获取英雄的名称
String heroName=e.select("a").text();
//System.out.println(heroName);
//拼接详情页的地址
String detailUrl="https://pvp.qq.com/web201605/"+heroURL;
//获取详情页的html代码
Document doc=Jsoup.connect(detailUrl).userAgent("Mozilla/4.0(compatible;MSIE 9.0;Windows NT 6.1;Trident/5.0)").get();
//找到显示图片的标签
Elements div=doc.select("[class=zk-con1 zk-con]");
//获取显示的背景
String bg=div.attr("style");
//System.out.println(bg);
//拆分字符串
//subString(起始位置,终止位置), subString(start,end)
//表示从[start,end]范围内拆分字符串
int num1=bg.indexOf("/");//获取起始位置
int num2=bg.lastIndexOf("'");//终止位置
String heroImgUrl=bg.substring(num1,num2);
System.out.println("开始下载"+heroImgUrl);
String uri=path+heroName+".jpg";
//下载图片 http://
download("http:"+heroImgUrl,uri);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* 下载指定路径下的图片
* @param url
*/
public static void download(String imgurl,String path) {
//构建url链接
try {
URL url=new URL(imgurl);
//IO 流:自来水管道
//输入流,将网页上的图片流化,输送到程序中
DataInputStream dataInputStream=new DataInputStream(url.openStream());
//输出流,将图片数据,输入到指定的文件保存
FileOutputStream outputStream=new FileOutputStream(path);
ByteArrayOutputStream output=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=0;
while((length=dataInputStream.read(buffer))!=-1) {
output.write(buffer,0,length);
}
outputStream.write(output.toByteArray());
outputStream.close();
dataInputStream.close();
output.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
//获取系统当前时间的毫秒数
long start=System.currentTimeMillis();
//爬取图片
getImg(url);
//获取系统时间
long end=System.currentTimeMillis();
System.out.println("图片下载完毕,一共耗时:"+(end-start)/1000.0);
}
}
2022/2/18 download(String imgurl,String path)方法里面有些代码不理解,打个标记。