Java基础复习(六)String字符串(StringBuffer,StringBuild),网址,日期类,日历类,Arrays类

String字符串

  1. 字符串的基础

    String类

    Java将与字符串相关的功能进行了面向对象,形成了对象的类----字符串类,表示方法""。

  2. 不可变字符串的常用方法
    • String:字符串本身不能发生改变,与指向字符串的引用无关.
    
    
    • 直接使用"",创建的不可变字符串

    • 对于不可变字符串本身是一个常量,保存在常量区.是存储在了堆区中一块儿特殊的区域里.

    • 字符串常量的特点:同一个字符串常量在常量区只允许存储一个.

    • 
      
      • 常用方法(判断)
      String s = "1000phone";
      	    //判断是否包含一个子字符串
      		//boolean contains(CharSequence s) 
      		System.out.println(s.contains("1000"));//true
      	    //判断两个字符串的内容是否相同
      		//boolean equals(Object anObject) 
      		System.out.println(s.equals("1000"));//false
      	    //忽略大小写判断两个字符串的内容是否相同
      		//boolean equalsIgnoreCase(String anotherString) 
      		System.out.println(s.equalsIgnoreCase("1000PHone"));//true
      	    //判断是否以某字符串开头
      		//boolean startsWith(String prefix)
      		System.out.println(s.startsWith("1000"));//true
      		//判断是否以某字符串结尾
      		//boolean endsWith(String suffix) 
      		System.out.println(s.endsWith("phone"));//true
      
      • 常用方法(转换)
      //1:使用构造方法
      		//String(char[] value) 
      		//String(char[] value, int offset, int count) 
      		char[] arr = {'p','h','o','n','e'};
      		String string1 = new String(arr);
      		String string2 = new String(arr, 2, 3);
      		System.out.println(string1+"     "+string2);
      //将字符串转成字符数组
      	    //char[] toCharArray() 
      		char[] arr1 = s.toCharArray();
      		System.out.println(arr1+" "+arr);
      
      //将字节数组转成字符串
      	    //String(byte[] bytes) 
      	    //String(byte[] bytes, int offset, int length)
      	    //String(byte[] bytes, String charsetName)//使用指定的编码将字节数组转换成字符成
      		byte[] bytes = {97,98,99,100};
      		String string3 = new String(bytes);
      		System.out.println(string3);
      
      //将字符串转成字节数组
      	    //byte[] getBytes() 
      		byte[] bytes1 = string3.getBytes();
      		System.out.println(bytes1[0]);
      //将基本数据类型转换成字符串
      	    //String.valueOf()
      String string4 = String.valueOf(true);
      		System.out.println(string4);
      
      • 常用方法(替换)
      //将基本数据类型转换成字符串
      	    //String.valueOf()
      		String string4 = String.valueOf(true);
      		System.out.println(string4);
      
      //子串:
      		//String substring(int beginIndex)  
      	    //String substring(int beginIndex, int endIndex) //包含起始位置,不包含结束位置,到结束位置的前一位
      		String string6 = "http://www.baidu.com:80/a/b/a/a?name=bing&age=18";
      		String subString1 = string6.substring(7);
      		String subString2 = string6.substring(7,20);
      		System.out.println(subString2);
      String string7 = "    1000  phone     ";
      		 //将字符串两端的空格去掉
      		//只能去除两边的,中间的不能去
      	    //String trim() 
      		String string7 = "    1000  phone     ";
      		System.out.println(string7.trim()+"haha");
      
      //按字典顺序比较两个字符串
      		/*
      		 * 字典顺序:按照ASCII表比较当前的两个字符,ASCII码大的认为是大的字符
      		 * 规则:从左边第一个字符开始比较
      		 * 如果当前的字符不相同,直接认为ASCII大的字符串是大字符串,后面的字符停止比较
      		 * 当前字符比较的具体规则:使用前面的字符-后面的字符,返回差值.如果是负数,说明前面的字符串小于后面的.反之前面的大.
      		 * 如果当前的字符相同,再去比较第二个字符,依次往后推,如果比到最后都相同,则认为两个字符串相等,差值返回0.
      		 */
      	    //int compareTo(String anotherString)
      		int value = s.compareTo("1000PHone");
      		System.out.println(value);
      

      常用方法(切割)

      //被作为刀的子字符串不会再被作为内容.
      		String string8 = "a,b,c,d,e,f";
      		String[] strings = string8.split(",");
      		for (int i = 0; i < strings.length; i++) {
      			System.out.println(strings[i]);
      		}
      		String string9 = "1.0.0.0.p.h.o.n.e";
      		String[] strings1 = string9.split("\\.");//默认.是任意字符的意思,\\.将它转义成普通的.
      		for (int i = 0; i < strings1.length; i++) {
      			System.out.println("strings1:"+strings1[i]);
      		}
      
  3. 可变字符串的常用方法
    • 字符串缓冲区.StringBuffer/StringBuilder:字符串本身可以发生变化,与指向可变字符串的引用无关
    • StringBuffer:出现在jdk1.0,是线程安全的,考虑了线程安全问题
    • StringBuilder:出现在jdk1.5,是线程不安全的,没有考虑线程安全问题
    • 在不考虑线程安全问题时,尽量使用StringBuilder,因为速度快,效率高
    StringBuffer sBuffer = new StringBuffer("1000phone");
    
    • 代码实例

      public class Demo3 {
      	public static void main(String[] args) {
      		StringBuffer sBuffer = new StringBuffer();
      		//1.存储:
          	//StringBuffer append(boolean b)   从最后插入
      		sBuffer.append("1000");
      		sBuffer.append("phone");
      		System.out.println(sBuffer);
              //StringBuffer insert(int offset, boolean b)   从指定位置插入
      		sBuffer.insert(4, true);
      		System.out.println(sBuffer);
              //2.删除:
              //StringBuffer delete(int start, int end)   删除一部分字符串
              //StringBuffer deleteCharAt(int index)  删除一个字符
      		System.out.println(sBuffer.delete(4, 8));
              //3.修改:
              //StringBuffer replace(int start, int end, String str)  替换指定的子字符串
              //void setCharAt(int index, char ch) 修改一个字符
      
              //4.获取:
              //char charAt(int index) 
      		System.out.println(sBuffer.charAt(0));
      		//返回指定子字符串的下标  从左到右
          	//int indexOf(String str)
      		System.out.println(sBuffer.indexOf("phone"));
          	//int indexOf(String str, int fromIndex)
      		System.out.println(sBuffer.indexOf("phone",7));
          	//int lastIndexOf(String str) 
              //返回指定子字符串(从右边开始计数)在此字符串第一次出现时的索引
              //int lastIndexOf(String str, int fromIndex) 
              //返回指定子字符串(从右边开始计数,范围:当前指定的位置-0)在此字符串第一次出现时的索引 
              //int length() 
              //返回长度(字符数)。 
      		System.out.println(sBuffer.length());
              //5.反转:
              //StringBuffer reverse()
      		System.out.println(sBuffer.reverse());
      	}
      }
      
      

网址

/*
	 *  1.学习网址: "https://www.baidu.com:80/ewf/sdf?name=bingbing&age=20"
	 
      * 网址的功能:实现客户端与服务器端的通信
		协议:是制定一个统一的规范
		http协议:超文本传输协议,实现的是网络间的通信的一个通信规则
		https协议:安全的http协议---可以省略,默认是http协议
		域名/IP:标记网络上的唯一一台主机     可以简化写:baidu
		端口号:标记同一台主机上的某一个服务器   [0,65536]---可以省,默认80
		资源路径:   可以省
		查询条件:   可以省
      
     
      * http://www.baidu.com/sdf/sfs?name=bingbing&age=33
      * 例子:
      * 1.判断是不是网址---http/https
      * 2.取出端口
      * 3.取出查询条件
       
	 * 
	 * 2.验证qq号与密码是否正确?
	 * a:本地验证---验证的是qq与密码的格式
	 * 				--qq:1.首字母不能为0  2.全部是数字  3.[5,11]
	 * 				要求:使用两种方式验证:1.普通的字符串验证     2.利用自定义的异常
	 * b:网络验证---验证的是qq与密码与服务器存储的是否相同.
	 * 				--写一个虚拟的qq,密码即可
	 */

日期类:Date

  1. Data:数据类,装的是二进制的数据

  2. java.util 对应的是java的日期类型,包括年月日 时分秒

  3. java.sql 对应的是数据库的日期类型 ,只包括 年月日

  4. public class Demo5 {
    	public static void main(String[] args) {
    		//获取当前的时间
    		Date date = new Date();
    		System.out.println(date);
    		
    		//long型的时间,这个时间从1970年开始算
    		long time = date.getTime();
    		System.out.println(time);
    		
    		Date date2 =  new Date(time);
    		System.out.println(date2);
    	}
    }
    
    
  5. 日期转换—日期格式转换器

    Format:格式转换器

    DateFormat:日期格式转换器

    public class Demo6 {
    	public static void main(String[] args) {
    		//1.使用系统提供的默认的格式-DateFormat--提供了四种可选模式:short,long,full,default
    		//第一个参数用于指定日期格式   第二个参数用于指定时间格式
    		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
    		String stringDate =  dateFormat.format(new Date());
    		System.out.println(stringDate);
    		//1993-02-03 23:23:12     1993/02/03 23:23:12
    		//使用自定义的日期格式转换器实现自由转换----SimpleDateFormat
    		SimpleDateFormat simpleDateFormat = new  SimpleDateFormat("yyyy/MM/dd  HH:mm:ss");//HH代表24小时制
    		String stringDate1 = simpleDateFormat.format(new Date());
    		System.out.println(stringDate1);
    		
    
    	}
    }
    

日历类(Calendar)

public class Demo8 {
	public static void main(String[] args) {
		//日历类
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		
		//获取当前的Date类型的时间
		Date date = calendar.getTime();
		System.out.println(date);
		
		//获取指定的值
		int value = calendar.get(Calendar.DATE);
		System.out.println(value);
		
		//获取属性的最大值,最小值
		int value1 = calendar.getMaximum(Calendar.YEAR);
		int value2 = calendar.getMinimum(Calendar.YEAR);
		System.out.println(value1+"    "+value2);
	}
}

Arrays:数组工具类

内部封装了大量操作数组的方法–方法都是静态.

public class Demo9 {
	public static void main(String[] args) {
		//简单数据类型数组转字符串---方便我们对数组的内容进行查看
		int[] arr1 = {3,4,6,8,9};
		System.out.println(arr1);
		System.out.println(Arrays.toString(arr1));
		
		//数组转集合
		//简单数据类型数组转集合
		List list = Arrays.asList(arr1);
		System.out.println(list.size());//1  将整个简单数据类型的数组作为了集合的一个元素
		//引用数据类型数组转集合
		String[] strings = {"haha","hehe","hello"};
		List list2 = Arrays.asList(strings);
		System.out.println(list2.size());//3    //引用类型数组中的一个元素对应集合中的一个元素
		
		//注意点:
		//转过来的集合长度是固定,所以不能执行增加,删除.但是可以执行修改,更改,遍历
		//list2.add("java");
		list2.set(0, "BigData");
		System.out.println(list2);
		
		//二分查找
		int[] arr3 = {3,6,8,67,678};
		System.out.println(Arrays.binarySearch(arr3, 67));
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值