java学习第七天

java中的方法(c语言中函数):做一件事的流程

方法好处:提高代码的复用性,简化开发,提高开发效率

创建方法的建议:方法=工具

一般会将一套固定的流程,抽出来,定义成方法

例如乔峰打一条降龙十八掌:

  1. 扎马步
  2. 双手摊开
  3. 手左右推几下
  4. 手上下推几下
  5. 向前推
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
方法名:方便在后面找到此方法,命名的方式和变量名命名方式一样
参数列表:执行此方法需要以来的第三方数据

尝试自己做一些简单方法 :
如下:

  1. 加法运算
  2. 圆的面积
  3. 矩形的面积
	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)方法里面有些代码不理解,打个标记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值