Java vs python 基础(4)

本文对比了Java和Python在处理字符串、数组和日期时间方面的差异。在Java中,StringBuffer和StringBuilder用于可变字符串,StringBuilder在非线程安全场景下速度更快。数组操作可以通过基本循环或For-Each循环实现。日期时间处理涉及SimpleDateFormat和Calendar类,后者提供了设置和获取日期特定部分的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

String 类

创建字符串

字符串长度

Java StringBuffer 和 StringBuilder 类

Java 数组 vs python 列表

处理数组

For-Each 循环

日期时间

获取当前日期时间

使用 SimpleDateFormat 格式化日期

使用printf格式化日期

解析字符串为时间

休眠(sleep)

测量时间

Calendar类

创建一个代表系统当前日期的Calendar对象

创建一个指定日期的Calendar对象


String 类

创建字符串

public class StringDemo{
   public static void main(String args[]){
      char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};
      String helloString = new String(helloArray);  
      System.out.println( helloString );
   }
}
helloArray = ['r', 'u', 'n', 'o', 'o', 'b']
helloString = ''.join(helloArray)
print(helloString)

字符串长度

public class StringDemo {
    public static void main(String args[]) {
        String site = "www.runoob.com";
        int len = site.length();
        System.out.println( "菜鸟教程网址长度 : " + len );
   }
}
site = "www.runoob.com"
len = len(site)
print("菜鸟教程网址长度 : " + str(len))

Java StringBuffer 和 StringBuilder 类

 

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

package com.hoko;

public class Test {
	public static void main(String args[]) {
		StringBuffer sBuffer = new StringBuffer("菜鸟教程官网:");
	    sBuffer.append("www");
	    sBuffer.append(".runoob");
	    sBuffer.append(".com");
	    System.out.println(sBuffer);
   }
}
sBuffer = ["菜鸟教程官网:"]
sBuffer.append("www")
sBuffer.append(".runoob")
sBuffer.append(".com")
print(''.join(sBuffer))

Java 数组 vs python 列表

package com.hoko;

public class Test {
	public static void main(String[] args) {
	      // 数组大小
	      int size = 10;
	      // 定义数组
	      double[] myList = new double[size];
	      myList[0] = 5.6;
	      myList[1] = 4.5;
	      myList[2] = 3.3;
	      myList[3] = 13.2;
	      myList[4] = 4.0;
	      myList[5] = 34.33;
	      myList[6] = 34.0;
	      myList[7] = 45.45;
	      myList[8] = 99.993;
	      myList[9] = 11123;
	      // 计算所有元素的总和
	      double total = 0;
	      for (int i = 0; i < size; i++) {
	         total += myList[i];
	      }
	      System.out.println("总和为: " + total);
	   }
}
# 列表大小
size = 10
# 定义列表
myList = [0.0] * size
myList[0] = 5.6
myList[1] = 4.5
myList[2] = 3.3
myList[3] = 13.2
myList[4] = 4.0
myList[5] = 34.33
myList[6] = 34.0
myList[7] = 45.45
myList[8] = 99.993
myList[9] = 11123
# 计算所有元素的总和
total = 0
for i in range(size):
    total += myList[i]
print("总和为: " + str(total))

处理数组

数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。

package com.hoko;

public class Test {
	public static void main(String[] args) {
	      double[] myList = {1.9, 2.9, 3.4, 3.5};
	 
	      // 打印所有数组元素
	      for (int i = 0; i < myList.length; i++) {
	         System.out.println(myList[i] + " ");
	      }
	      // 计算所有元素的总和
	      double total = 0;
	      for (int i = 0; i < myList.length; i++) {
	         total += myList[i];
	      }
	      System.out.println("Total is " + total);
	      // 查找最大元素
	      double max = myList[0];
	      for (int i = 1; i < myList.length; i++) {
	         if (myList[i] > max) max = myList[i];
	      }
	      System.out.println("Max is " + max);
	   }
}
myList = [1.9, 2.9, 3.4, 3.5]
# // 打印所有列表素
for i in range(len(myList)):
    print(str(myList[i]) + '')
# // 计算所有元素的总和
total = 0
for i in range(len(myList)):
    total += myList[i]
print("Total is " + str(total))
# // 查找最大元素
max = myList[0]
for i in range(1, len(myList)):
    if myList[i] > max:
        max = myList[i]
print("Max is " + str(max))

For-Each 循环

public class TestArray {
   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};
 
      // 打印所有数组元素
      for (double element: myList) {
         System.out.println(element);
      }
   }
}
myList = {1.9, 2.9, 3.4, 3.5}
# // 打印所有数组元素
for element in myList:
    print(element)

日期时间

获取当前日期时间

package com.hoko;

import java.util.Date;

public class Test {
	public static void main(String[] args) {
		// 初始化 Date 对象
	       Date date = new Date();
	        
	       // 使用 toString() 函数显示日期时间
	       System.out.println(date.toString());
	   }
}
import time

localtime = time.asctime( time.localtime(time.time()) )
print (time.strftime("%a %b %d %H:%M:%S "+"CST"+" %Y", time.localtime()))
print ("本地时间为 :", localtime)

使用 SimpleDateFormat 格式化日期

package com.hoko;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		Date dNow = new Date( );
	      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
	 
	      System.out.println("当前时间为: " + ft.format(dNow));
	   }
}
import time

localtime = time.asctime( time.localtime(time.time()) )
print (time.strftime("%a %b %d %H:%M:%S "+"CST"+" %Y", time.localtime()))
print ("本地时间为 :", localtime)
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

使用printf格式化日期

package com.hoko;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		// 初始化 Date 对象
	     Date date = new Date();
	 
	     //c的使用  
	    System.out.printf("全部日期和时间信息:%tc%n",date);          
	    //f的使用  
	    System.out.printf("年-月-日格式:%tF%n",date);  
	    //d的使用  
	    System.out.printf("月/日/年格式:%tD%n",date);  
	    //r的使用  
	    System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);  
	    //t的使用  
	    System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);  
	    //R的使用  
	    System.out.printf("HH:MM格式(24时制):%tR",date);  
	   }
}
import time

# System.out.printf("全部日期和时间信息:%tc%n",date);
print("全部日期和时间信息:", time.strftime("%A %B %d %H:%M:%S CST %Y", time.localtime()))
# System.out.printf("年-月-日格式:%tF%n", date);
print("年-月-日格式:",time.strftime('%Y-%m-%d',time.localtime()) )
# System.out.printf("月/日/年格式:%tD%n", date);
print("月/日/年格式:",time.strftime('%m/%d/%y',time.localtime()) )
# System.out.printf("HH:MM:SS PM格式(12时制):%tr%n", date);
print("HH:MM:SS PM格式(12时制):",time.strftime('%I:%M:%S %p',time.localtime()) )
# System.out.printf("HH:MM:SS格式(24时制):%tT%n", date);
print("HH:MM:SS格式(24时制):",time.strftime('%H:%M:%S',time.localtime()) )
# System.out.printf("HH:MM格式(24时制):%tR", date);
print("HH:MM格式(24时制):",time.strftime('%H:%M',time.localtime()) )
package com.hoko;

import java.util.Date;
import java.util.Locale;

public class Test {
	public static void main(String[] args) {
		// 初始化 Date 对象
	     Date date = new Date();
	 
	        //b的使用,月份简称  
	        String str=String.format(Locale.US,"英文月份简称:%tb",date);       
	        System.out.println(str);                                                                              
	        System.out.printf("本地月份简称:%tb%n",date);  
	        //B的使用,月份全称  
	        str=String.format(Locale.US,"英文月份全称:%tB",date);  
	        System.out.println(str);  
	        System.out.printf("本地月份全称:%tB%n",date);  
	        //a的使用,星期简称  
	        str=String.format(Locale.US,"英文星期的简称:%ta",date);  
	        System.out.println(str);  
	        //A的使用,星期全称  
	        System.out.printf("本地星期的简称:%tA%n",date);  
	        //C的使用,年前两位  
	        System.out.printf("年的前两位数字(不足两位前面补0):%tC%n",date);  
	        //y的使用,年后两位  
	        System.out.printf("年的后两位数字(不足两位前面补0):%ty%n",date);  
	        //j的使用,一年的天数  
	        System.out.printf("一年中的天数(即年的第几天):%tj%n",date);  
	        //m的使用,月份  
	        System.out.printf("两位数字的月份(不足两位前面补0):%tm%n",date);  
	        //d的使用,日(二位,不够补零)  
	        System.out.printf("两位数字的日(不足两位前面补0):%td%n",date);  
	        //e的使用,日(一位不补零)  
	        System.out.printf("月份的日(前面不补0):%te",date);  
	   }
}
import time

month = {'Jan': '一月', 'Feb': '二月', 'Mar': '三月', 'Apr': '四月', 'May': '五月', 'Jun': '六月', 'Jul': '七月', 'Aug': '八月',
         'Sep': '九月', 'Oct': '十月', 'Nov': '十一月', 'Dec': '十二月'}

# String str=String.format(Locale.US, "英文月份简称:%tb", date);
print('英文月份简称:', time.strftime("%b", time.localtime()))

# System.out.printf("本地月份简称:%tb%n", date);
print('本地月份简称:',month[time.strftime("%b", time.localtime())] )

# str=String.format(Locale.US, "英文月份全称:%tB", date);
print('英文月份全称:', time.strftime("%B", time.localtime()))

# System.out.printf("本地月份全称:%tB%n", date);
print('本地月份全称:',month[time.strftime("%b", time.localtime())] )

# str=String.format(Locale.US, "英文星期的简称:%ta", date);
print('英文星期的简称:', time.strftime("%a", time.localtime()))

# System.out.printf("本地星期的简称:%tA%n", date);
print('本地星期的简称:', time.strftime("%A", time.localtime()))

# System.out.printf("年的前两位数字(不足两位前面补0):%tC%n", date);
print('年的前两位数字(不足两位前面补0):', time.strftime("%Y", time.localtime())[0:2])

# System.out.printf("年的后两位数字(不足两位前面补0):%ty%n", date);
print('年的后两位数字(不足两位前面补0):', time.strftime("%y", time.localtime()))

# System.out.printf("一年中的天数(即年的第几天):%tj%n", date);
print('一年中的天数(即年的第几天):', time.strftime("%j", time.localtime()))

# System.out.printf("两位数字的月份(不足两位前面补0):%tm%n", date);
print('两位数字的月份(不足两位前面补0):', time.strftime("%m", time.localtime()))

# System.out.printf("两位数字的日(不足两位前面补0):%td%n", date);
print('两位数字的日(不足两位前面补0):', time.strftime("%d", time.localtime()))

# System.out.printf("月份的日(前面不补0):%te", date);
print('月份的日(前面不补0):', time.strftime("%e", time.localtime()))

解析字符串为时间

package com.hoko;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
		 
	      String input = args.length == 0 ? "1818-11-11" : args[0]; 
	 
	      System.out.print(input + " Parses as "); 
	 
	      Date t; 
	 
	      try { 
	          t = ft.parse(input); 
	          System.out.println(t); 
	      } catch (ParseException e) { 
	          System.out.println("Unparseable using " + ft); 
	      }
	   }
}
from datetime import datetime
import time
def mm(*args):
    "1818-11-11"
    b='1818-11-11'
    inp = (1818,11,11,0,0,0,0,0,0) if len(args) == 0  else args


    try :
        t = time.strftime("%a %b %d %H:%M:%S "+"CST"+" %Y", inp)
        print(b + " Parses as " + t)
    except Exception as e :
        print("Unparseable using " + time.strftime("%a %b %d %H:%M:%S "+"CST"+" %Y", inp))
mm()

休眠(sleep)

sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。

你可以让程序休眠一毫秒的时间或者到您的计算机的寿命长的任意段时间。例如,下面的程序会休眠3秒:

package com.hoko;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		      try { 
		         System.out.println(new Date( ) + "\n"); 
		         Thread.sleep(1000*3);   // 休眠3秒
		         System.out.println(new Date( ) + "\n"); 
		      } catch (Exception e) { 
		          System.out.println("Got an exception!"); 
		      }
		   }
}
import time

print(time.strftime("%a %b %d %H:%M:%S " + "CST" + " %Y", time.localtime()))
time.sleep(3)
print(time.strftime("%a %b %d %H:%M:%S " + "CST" + " %Y", time.localtime()))

测量时间

import java.util.*;
  
public class DiffDemo {
 
   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}
import time
start = time.time()
print(time.strftime("%a %b %d %H:%M:%S " + "CST" + " %Y", time.localtime()),'\n')
time.sleep(5*60*10/1000)
print(time.strftime("%a %b %d %H:%M:%S " + "CST" + " %Y", time.localtime()),'\n')
end=time.time()
diff=end-start
print("Difference is : " + str(diff))
print("Got an exception!")

Calendar类

我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。

Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

创建一个指定日期的Calendar对象

使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值