JAVA 与 PHP 的不同和相同
Java语言与PHP语言因为都可以做web应用开发,所以总有入门学习这2种语言的入门者会问Java和PHP哪一个好。讨论语言的好坏是一件不太明智的事情,我认为只能去说那一种编程语言更加适合干什么,人与动物最大的区别就是人会使用工具,而用适合的工具去干适合的事就会事半功倍,相反的就会事倍功半,就像杀鸡用牛刀,大炮打蚊子,听上去用的工具很牛逼,实际上在杀鸡和打蚊子这两件事情上牛刀、大炮真的还不如菜刀和电蚊拍好使。
应用面不同:
Java虽然目前被主要用作企业级应用编程,且多采用BS(浏览器对服务器)架构,但其可以说比较全能,桌面应用,嵌入式,移动端,服务器都可以用Java语言进行编程。
PHP是专注于动态网页技术。
语言类型不同:
Java是强类型编译语言,而强类型语言最显著的特征就是变量在使用前必须进行数据类型声明和赋值,而未经声明的变量是无法进行使用的。编译型语言因为经过编译器编译所以在执行效率上出色。
PHP是弱类型解释语言,其变量不用声明数据类型,且未经赋值可以直接使用。解释语言无需进行编译,因此在执行效率上要比编译语言差。
语法运算符有不同:
PHP中有“===”符号,表示的意思是检查左右两边类型及值是否相等,而Java中没有这个符号,和其作用相同的是equals方法,此方法是Java中的所有类的顶级父类object中的方法,要使用这个方法必须在使用这个方法的子类中对其进行覆盖重写,否则其作用于“==”符号相同。
在循环语句中PHP有foreach语句专门来进行数组的遍历,而Java中没有此语句,但有增强for,其作用与foreach基本相同。
面向对象支持不同:
Java是完全面向对象的语言,在编程上要求程序员必须面向对象进行编程。
PHP虽然也支持面向对象,但并不强制要求使用面向对象进行网页构架,使得PHP在网页编程中更加自由。
输出方式不同:
Java在输出上只有2种方式,一种是System.out.print()和System.out.println()语句,将信息打印到控制台上,前者是打印不换行,后者是打印并换行。另一种是通过API获得输出流将信息输出到文件、另一台电脑、或者是网页上。
PHP输出的信息都将输出在网页上,而且有多种输出语句。如echo、vardump、print等。
都有较好的跨平台性:
Java语言虽然是编译语言,但并不将源代码编译成特定平台上的机器码,而是编译为Java字节码文件,再由特定平台上的JVM(java虚拟机)运行,虽然比直接编译为机器码执行效率有所下降,但这种方案成功的实现了跨平台性与执行效率之间的平衡,而且随着目前硬件水平的不断提高,这种差距几乎可以忽略不计。
PHP是解释语言,它的运行是靠解释引擎来解释运行,解释引擎可以跨平台使用。但因为没有经过编译,因此每执行一次就需要解释一次,所有执行效率要比Java差。
总结:
这两种语言在制作动态网页方面各有所长,PHP制作网页成本较低,多适合资讯类网站及个人动态网站的搭建。
Java因其安全性,多线程,同步机制,跨平台执行效率多适合涉及数据安全及资金流转等方面的网站搭建,因此使用Java的多是一些大中型公司的企业级开发。
JAVA 与 PHP 的不同和相同的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- 复杂json解析(json里面嵌套json)
调用第三方接口,返回一堆json,我只想取得里面的某一个属性,但是返回的比较复杂,无法直接拿到属性,格式类似于这样: {"video":{"id":" ...
- 《Windows核心编程》之“完成端口”(对所有IO都是如此,不仅仅是对socket)
<Windows核心编程>第10章开头部分一再强调:“IO Completion Port”是“构建高性能.可升缩的应用程序”的最佳设施之一,它不仅适用于处理设备IO,也适用于其它越来越多 ...
- 【codeforces 785A】Anton and Polyhedrons
[题目链接]:http://codeforces.com/contest/785 [题意] 给你各种形状的物体; 然后让你计算总的面数; [题解] 用map来记录各种物体本该有的面数; 读入各种物体; ...
- sparksql jdbc数据源
用的本地模式,pom.xml中添加了mysql驱动包,mysql已经开启,写入的时候发现用format("jdbc").save()的方式发现会有does not allow cr ...
- struts2_11_实现自己的拦截器的定义
1)登录界面代码: <% //设置session的值keyword为user request.getSession().setAttribute("user", " ...
- TensorFlow 学习(七) — 常用函数 api、tf.nn 库
0. 四则运算 平方:tf.square(),开方:tf.sqrt() tf.add().tf.sub().tf.mul().tf.div().tf.mod().tf.abs().tf.neg() 1 ...
- C#委托之个人理解
C#委托之个人理解 什么是委托 首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西. 如何使用委托 在使用委托的时候,你可以像对待一个类一样对待它.即先 ...
- 静态资源命名的注意点以及document.write与innerHTML的区别
今天拿出了去年刚开始学前端的那本书来看,发现好多新东西. 使用下划线和混合大小写不利于SEO! document.write与innerHTML的区别 这个问题大概是初学前端的人才会问的吧,业务代码中 ...
- 【21.28%】【codeforces 707D】Persistent Bookcase
time limit per test2 seconds memory limit per test512 megabytes inputstandard input outputstandard o ...
- 在web应用程序中在网页中对Web.config文件进行数据连接配置
using System; using System.Collections.Generic; using System.Configuration; using System.Web.Configu ...