java对比php快速入门

本文探讨了Java和PHP在变量、字符串、数组、条件判断、循环结构、函数使用、命令行参数处理、时间操作、文件操作及数组操作等方面的入门知识,旨在帮助初学者快速了解两者之间的差异和入门要点。

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

 

 

比较方面:变量,字符串,数组,判断,循环,函数 ,命令行参数,时间,文件,数组操作,调试

比较项目

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);

}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值