1.Java开发介绍

J2SE:Java 2 Platform Standard Edition(2005年之后更名为JAVA SE)。

包含构成Java语言核心的类。比如:数据库连接、接口定义、数据结构、输入/输出、网络编程。

J2EE:Java 2 Platform Enterprise Edition(2005年之后更名为JAVA EE)。

Enterprise Edition(企业版)包含J2SE 中的所有类,并且还包含用于开发企业级应用的类。比如:EJB、Servlet、JSP、XML、事务控制,也是现在JAVA应用的主要方向,像一些银行或电信的系统大多基于此架构。

J2ME:Java 2 Platform Micro Edition(2005年之后更名为JAVA ME)。

用于消费类电子产品的软件开发,做手机APP的

2.JAVA编译过程

如下图所示,要想运行java,需要两步:

其中hello.java就是源码,负责我们看的,然后编译成hello.class, 当运行class代码时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader.

而class文件是不依赖于任何平台的, 这样做的好处在于跨平台,使得任何机器上的JVM都能去解释并运行这个class文件.如下图所示:

3.JDK安装

进入官网下载,下载后安装,安装后找到bin/javac 和java所在的位置,如下图所示:

然后将这个路径添加到电脑——>属性——>高级——>环境变量——>系统变量->PATH中,这样我们就可以直接使用这两个命令进行编译java文件了.

  • PATH:用来提供给操作系统可以直接执行exe程序的路径(和Linux的Path路径一样)

javac

用来将*.java文件生成*.class文件,它的使用如下所示:

java

将类加载到JVM里进行运行,比如Hello.class,则输入java Hello即可

4. 编译Hello World

创建一个public的Hello类,这个类的文件则必须为Hello.java

PS: Java保存的文件名必须与public类名一致

Hello.java 内容如下:

public class Hello{       //该文件名的类

                  public static void main(String args[]){        //类里的main
System.out.println("Hello World!");
}
}

然后通过cmd进入该代码目录:

输入javac Hello.java,如下图所示,已经生成Hello.class

然后输入 java Hello ,来运行Hello类:

PS:如果觉得进入目录麻烦的话,可以设置CLASSPATH路径,来指定类所在目录

5.分析刚刚运行的Hello代码

5.1 代码如下所示:

public class Hello{                         //该文件名的类

                  public static void main(String args[]){      //类里的main
System.out.println("Hello World!");
}
}

5.2 为什么类里有个mian主方法(主函数)?

因为我们是通过java Hello命令来运行这个类的,而进入类时,必须要提供一个main主方法给JVM,才能让程序运行,不过在项目中,主类是必须有main的,而有些功能类不一定必须要有main,不过有main的好处在于方便测试.

5.3 为什么main方法是public static void的?

public static用来修饰main为该类的公共静态成员方法(函数).

  • public: 好处在于让JVM在类外也能够调用.
  • static:  好处在于无需创建类对象,直接就可以通过类名进行访问.
  • void:    因为JVM运行结束后,这个类则已经不需要了,所以不需要返回值

5.4 为什么main方法的参数要有String args[]?

主要用来运行类时,我们想传递参数时才会用到的.比如修改代码如下所示:

public class Hello{
public static void main(String args[]){ System.out.println("Hello World!"); for(int i=0;i<args.length;i++)
System.out.println(args[i]); }
}

然后编译后,输入各种参数,并打印出来:

5.5 *.java文件中,除了Hello类还可以有其它类吗?

可以有的,但是在文件里, public只能有1个,或者不存在,并且 public修饰的类名必须和文件名一致.

如果在*.java中定义了多个class,则编译后也会形成多个对应的*.class文件.

比如代码如下所示:

public class Hello{
public static void main(String args[]){
System.out.println("Hello World!"); Hello2.print(); //调用Hello2类的print静态方法 for(int i=0;i<args.length;i++)
System.out.println(args[i]);
}
}
class Hello2{
static void print()
{
System.out.println("Hello2 print!");
} public static void main(String args[]){
System.out.println("Hello2 World!");
}
}

编译后,生成了两个class文件:

运行两个class试试:

6.不同的打印输出总结

示例代码:

int i=10;
double t=2.33; System.out.printf("println: i=%d\r\n",i);//继承C的printf风格,所以需要格式判定 System.out.print("println: t="+t);//输入一句话,通过函数重载,所以不需要格式判定 System.out.println("");
System.out.println("println: i="+i);//输出一行,并且自动回车

打印:

下章学习:

2.JAVA-基础语法以及String的介绍

1.JAVA-Hello World的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. java 保留字段volatile、transient、native、synchronized

    1.volatile Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程.当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享 ...

  2. 网络编程之套接字(tcp)

    经过几天高强度的学习,对套接字的编程有了初步的认识,今天对这几天所学的知识总结一下:首先简单阐述一下tcp通信: TCP提供的是可靠的,顺序的,以及不会重复的数据传输,处理流控制,由于TCP是可靠的, ...

  3. eclipse工具按键翻译

    1.新建项目界面 2.新建类界面 3.类中右击

  4. Oracle-11:联合查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 联合查询的实际上的意义就是从俩个结果集中拿有特定联系的结果封装为一个结果集 数据库脚本给放一份,供测试使用 c ...

  5. Azure Go Management SDK 中国版使用示例

    简介 刚学习go几天,尝试调用Azure的SDK进行管理API的操作,基本思路是基于注册的AD Application信息生成token,然后再使用Token生成serviceClient,然后再进行 ...

  6. SpringBoot操作数据库 2017.12.14

    http://blog.csdn.net/forezp/article/details/61472783

  7. Python数据库连接池DBUtils.PooledDB

    DBUtils 是一套用于管理数据库连接池的包,为高频度高并发的数据库访问提供更好的性能,可以自动管理连接对象的创建和释放.最常用的两个外部接口是 PersistentDB 和 PooledDB,前者 ...

  8. 查看centos系统位数和强制关闭yum

    一个小命令查看centos 是什么多少位系统 getconf LONG_BIT 方法二: [root@linuxzgf ~]#uname -m 如果有x86_64就是64位的,没有就是32位的后面是X ...

  9. Java Script 读书笔记 (四) 面向对象编程

    1. 对象,属性 前面看到对象里删除属性一直疑惑,什么是对象,为什么属性可以删除, 我印象里的属性还是停留在property, 总想不明白为什么属性竟然能够删除.直到看到标准库才明白,原来对象就是py ...

  10. vue 实践记录

    打包后使用相对路径 在 build/webpack.prod.conf.js 的 output 节点添加配置:publicPath: './' 打包时使用shell复制文件 在入口 build/bui ...