目录
Java StringBuffer 和 StringBuilder 类
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);