比较方面:变量,字符串,数组,判断,循环,函数 ,命令行参数,时间,文件,数组操作,调试
比较项目 | php | java |
变量 | 弱类型语言,变量可以任意代表任何类型 $age = 13; $name = "pengpeng"; $money = 150.53; $isBoy = true;
这里等号前后空格是为了整齐好看。
例子 <?php $age = 13; print $age; ?> 运行方式 php t.php | 强类型语言 int age=13; String name = "pengpeng"; double money= 150.33; boolean isBoy = true; 例子 HelloWorld.java public class HelloWorld { /* 第一个Java程序 * 它将打印字符串 Hello World */ public static void main(String []args) { int age=13;
String sAge = String.valueOf(age);
System.out.println( sAge ); } } 运行方式 [root@hz-netim-02 java]# javac HelloWorld.java [root@hz-netim-02 java]# java HelloWorld 13 [root@hz-netim-02 java]# |
|
|
|
字符串及连接 | $str1 = "str1"; $str2 = "str2"; $str3 = $str1.$str2; $str4 = $str1."test".$str2; print $str3."\n"; print $str4."\n"; | String str1="str1"; String str2="str2"; String str3=str1+str2; String str4=str1+"test"+str2; System.out.println( str3); System.out.println( str4); |
数组遍历 | <?php $colorArr = array('red','blue','green','yellow'); foreach ($colorArr as $color){ print $color."\n"; } ?> |
String[] colorArr = {"red","blue","green","yellow"}; for (int i = 0; i < colorArr.length; i++) { System.out.println( colorArr[i]); }
String[] str=new String[4] |
哈希数组及遍历 | <?php $ageArr = array('zhang'=>13,'li'=>14,'wang'=>15,'qian'=>12); foreach ($ageArr as $name => $age){ print "$name = $age\n"; } ?> | import java.util.Map; import java.util.HashMap; import java.util.Set; import java.util.HashSet; import java.util.Iterator; import java.util.Hashtable; import java.util.TreeMap; public class HelloWorld {
public static void main(String []args) { Map map=new HashMap(); map.put("zhang", "13"); map.put("li", "14"); map.put("wang", "15"); map.put("qian", "12");
for (Iterator iterator= map.keySet().iterator(); map.keySet().hasNext();) { Object key = iterator.next(); String sKey = (String) key; System.out.println("map.get("+sKey+") is :"+map.get(key)); }
//或者下面方法
Iterator iterator = map.keySet().iterator(); //取得迭代器 while (iterator.hasNext()) { //遍历迭代器 Object key = iterator.next(); String sKey = (String) key; System.out.println("map.get("+sKey+") is :"+map.get(key)); } } }
JSONArray dataDisksArr = jsonobject.getJSONObject("result").getJSONObject("instance").getJSONArray("dataDisks"); Iterator iterator=dataDisksArr.iterator(); while(iterator.hasNext()) { JSONObject job = (JSONObject)iterator.next(); String diskId = job.getJSONObject("cloudDisk").getString("diskId");
System.out.println("diskId="+diskId);
} |
json | $arr = Array('one', 'two', 'three'); echo json_encode($arr);
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
| import net.sf.json.JSONObject; JSONObject json = JSONObject.fromObject(queryMap);//json数组
JSONObject jsonobject = JSONObject.fromObject(str);//从字符串转json对象
//json合并 相同的字段会被后一个覆盖 JSONObject oldjson1=new JSONObject();
oldjson1.put("name", "zhangsan");
JSONObject oldjson2=new JSONObject();
oldjson2.put("name", "lisi"); oldjson2.put("age", "20");
//合并后的json JSONObject newjson=new JSONObject();
newjson.putAll(oldjson1); newjson.putAll(oldjson2);
//jsonArr遍历 JSONArray idsJSONArray = JSONArray.fromObject(sub_instance_arr_str); System.out.println("sub_instance_arr_str="+sub_instance_arr_str); System.out.println(idsJSONArray.toString()); Iterator iterator=idsJSONArray.iterator(); while(iterator.hasNext()){ String sub_instance_id = iterator.next().toString(); } |
条件判断 | <?php $user=`whoami`; if($user != "work" || ! isset($argv[1]) ) { echo "必须是work账户,同时为./release.sh snake 或者 ./release.sh hornbill"; exit ; } else { echo "no problem"; }
?> | public class Test { public static void main(String args[]){ String user="whoami"; if( user != "work" || args[1] == null ) { System.out.println("必须是work账户"); System.exit(0); } else { System.out.println("no problem"); } } } |
case | case $1 in "snake") back_snake; snake; reduction_snakenx; other_snake; virus_restart; ;; "hornbill") back_hornbill; hornbill; # hornbill_min; # hornbill_restart; reduction_nx; other_hornbill; hornbill_restart_again; ;; "backup") back_snake; back_hornbill; hornbill_restart; exit; ;; *) echo NULL; ;; esac
希望函数 back_snake 往后变为 backSnake | public class Test { public static void main(String args[]){ String expression = ""; if(args.length >0) expression = args[0]; switch(expression){ case "snake": System.out.println("snake"); break; case "hornbill": System.out.println("hornbill"); break;
default : System.out.println("default"); } } } |
循环 | <?php for($i=0;$i<10;$i++) { print $i."\n"; } ?> | public class Test { public static void main(String args[]){ for(int i = 0; i < 10; i=i+1) { System.out.println("value of i : " +i ); } } } |
函数定义
或 方法定义 | <?php header ( "Content-Type:text/html;charset=utf-8" ); function send_content_mail($maillist, $subject, $content) { $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=utf-8" . "\r\n"; $headers .= 'From: stat@meilishuo.com' . "\r\n"; $subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; $content.="<center>如有疑问,咨询管理员曾文杰wenjiezeng@meilishuo.com</center"; mail($maillist, $subject, $content, $headers); }
send_content_mail("wenjiezeng@meilishuo.com", "test", "testMail"); ?> | 静态调用 public class Test { public static void main(String args[]){ test(); } private static void test() { for(int i = 0; i < 10; i=i+1) { System.out.println("value of i : " +i ); } } }
动态调用需要先实例化 public class HelloWord {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str="HelloWord!"; int a=0; int b=a+1; int result=0;
for(int i=0;i<20;i++) { //Add方法调用 //类的实例化 HelloWord helloword=new HelloWord();
//通过实例化的类进行Add方法调用 result=helloword.Add(a, b);
System.out.println(str+" "+ result);
a+=i;
} } /** * 被调用方法,没被static修饰,不是静态方法。调用时需要通过类的实例化进行调用 * @param x * @param y * @return */ private int Add(int x,int y) {
return x+y; } }
|
命令行参数 | $argv <?php print_r($argv); ?>
php t.php 1 2 3 Array ( [0] => t.php [1] => 1 [2] => 2 [3] => 3 ) | import java.lang.reflect.Array; public class Test { public static void main(String args[]){ helpFunc(args); helpFunc(555); } public static void helpFunc(Object obj) { String className = obj.getClass().getName();
System.out.println("className="+className); boolean bArr = obj.getClass().isArray(); if(bArr) { int length = Array.getLength(obj); for (int i = 0; i < length; i++) { Object os = Array.get(obj, i); System.out.println("----obj "+ String.valueOf(i)+" is "+os.toString()); } } else { System.out.println("----obj ="+obj.toString()); } } }
运行情况 java Test 1 2 3 className=[Ljava.lang.String; ----obj 0 is 1 ----obj 1 is 2 ----obj 2 is 3 className=java.lang.Integer ----obj =555 |
时间处理 | date_default_timezone_set('PRC'); $today = date("Y-m-d",time()); $yesterday = date("Y-m-d",time()-86400); $yesterday = date("Ymd",strtotime("-1 day")); |
String timeStr = "2017-8-24 11:17:10"; // 字面时间 SimpleDateFormat bjSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); bjSdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); Date date = bjSdf.parse(timeStr); // 将字符串时间按北京时间解析成Date对象 Date now=new Date(); SimpleDateFormat f=newSimpleDateFormat("今天是"+"yyyy年MM月dd日 E kk点mm分"); System.out.println(f.format(now));
// -2:前天 -1:昨天 0:今天 1:明天 2:后天 public int getDayString(Date startDate){ int offSet = Calendar.getInstance().getTimeZone().getRawOffset(); long today = (System.currentTimeMillis()+offSet)/86400000; long start = (startDate.getTime()+offSet)/86400000; return (start-today); }
Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowDateStr= sdf.format(date); ///加1天 Date endDate = sdf.parse(endTime); Calendar c = Calendar.getInstance(); c.setTime(endDate); c.add(Calendar.DAY_OF_MONTH, 1); //利用Calendar 实现 Date日期+1天 endDate = c.getTime();
|
小文件 按行处理 | $cc = file_get_contents($file); $tmpArr = preg_split('/\r|\n/',$cc,-1,PREG_SPLIT_NO_EMPTY); foreach($tmpArr as $line) { //do with $line } |
public String readToString(String fileName) { String encoding = "UTF-8"; File file = new File(fileName); Long filelength = file.length(); byte[] filecontent = new byte[filelength.intValue()]; try { FileInputStream in = new FileInputStream(file); in.read(filecontent); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { return new String(filecontent, encoding); } catch (UnsupportedEncodingException e) { System.err.println("The OS does not support " + encoding); e.printStackTrace(); return null; } } #################字符串拆行################## import java.lang.reflect.Array; public class Test { public static void main(String args[]){
String str1 = "ui78\n8huh\njf87\nuie8\nujkdf90\nhu67ghj\n894ghk"; System.out.println("str1=" + str1);
String[] str2 = str1.split("\n|\r");
for(int i = 0;i<str2.length;i++) { System.out.println("第" + i + "个:" + str2[i]); } System.out.println("\n" + "---------------------------------" + "\n"); }
}
"2|33|4".split("|") 出来的结果是: "" 2 | 3 3 | 4 奇怪吧,不过注意看一下API说明还是知道原因的. 所以正常的写法是这样的: ①、如果用“.”作为分隔的话, 必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split("."); ②、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"), 这样才能正确的分隔开,不能用String.split("|"); “.”和“|”都是转义字符,必须得加"\\"; ③、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1andb =2orc=3”,把三个都分隔出来,可以用String.split("and|or");
System.out.println("使用StringTokenizer的切分字符串"); long st3 = System.nanoTime(); StringTokenizer token=new StringTokenizer(orginStr,"."); System.out.println("StringTokenizer截取字符串用时:"+(System.nanoTime()-st3)); System.out.println("StringTokenizer截取字符串结果个数:" + token.countTokens()); System.out.println();
|
大文件逐行 | <?php $handle = @fopen("/tmp/inputfile.txt", "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 4096); echo $buffer; } fclose($handle); } ?> |
/** * 以行为单位读取文件,常用于读面向行的格式化文件 */ public static void readFileByLines(String fileName) { File file = new File(fileName); BufferedReader reader = null; try { System.out.println("以行为单位读取文件内容,一次读一整行:"); reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { // 显示行号 System.out.println("line " + line + ": " + tempString); line++; } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } } |
数组函数 | arsort() asort() count() krsort() ksort() | String[] s1={"a","b","c","d","e"}; for(int i=0;i<s1.length;i++) { System.out.print(s1[i]+" ");//输出a b c d e,获取字符串数组 }
System.out.println("升序排序如下:"); int[] arr1 = {6,4,5,2}; Arrays.sort(arr1); for(int i:arr1) System.out.println(i);
System.out.println("将数组倒序排序如下:"); ArrayList<Integer> list2=new ArrayList<Integer>(); for(int i=1;i<=5;i++){ list2.add(i); } Collections.reverse(list2); //list2.size(); 表示数组的长度 for(int i:list2) System.out.println(i);
package collection; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class CollectionsTest { public static void main(String[] args) { ArrayList nums = new ArrayList(); nums.add(8); nums.add(-3); nums.add(2); nums.add(9); nums.add(-2); System.out.println(nums); Collections.reverse(nums); System.out.println(nums); Collections.sort(nums); System.out.println(nums); Collections.shuffle(nums); System.out.println(nums); //下面只是为了演示定制排序的用法,将int类型转成string进行比较 Collections.sort(nums, new Comparator() {
@Override public int compare(Object o1, Object o2) { // TODO Auto-generated method stub String s1 = String.valueOf(o1); String s2 = String.valueOf(o2); return s1.compareTo(s2); }
}); System.out.println(nums); } } |
调试函数 | var_dump() print_r() | import java.lang.reflect.Array; public class Test { public static void main(String args[]){ helpFunc(args); helpFunc(555); } public static void helpFunc(Object obj) { String className = obj.getClass().getName();
System.out.println("className="+className); boolean bArr = obj.getClass().isArray(); if(bArr) { int length = Array.getLength(obj); for (int i = 0; i < length; i++) { Object os = Array.get(obj, i); System.out.println("----obj "+ String.valueOf(i)+" is "+os.toString()); } } else { System.out.println("----obj ="+obj.toString()); } } } |
字符替换 | $file = preg_replace('/\.less$/','.css',$file); | String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 String replaceAll(String regex, String replacement |
发送邮件 |
| // 文件名 SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // 收件人电子邮箱 String to = "abcd@gmail.com"; // 发件人电子邮箱 String from = "web@gmail.com"; // 指定发送邮件的主机为 localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认session对象 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Set To: 头部头字段 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头部头字段 message.setSubject("This is the Subject Line!"); // 设置消息体 message.setText("This is actual message"); // 发送消息 Transport.send(message); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } } |
写日志 | function addLog($msg) { $now_date_day = date("Ymd", time()); $logtime = date("Ymd H:i:s", time()); $fileLog = "data/logs/tmp_myLogRS" . $now_date_day . ".txt"; file_put_contents($fileLog, "[" . $logtime . "]" . $msg . "\n", FILE_APPEND); } |
|