今天开始进行Java语言的学习
配置环境:
点击这个链接来下载这个eclipse包:eclipse
提取码:zzvy
首先我们打开压缩包
点击下面的应用程序
选择公共JRE,下面的安装目录不要修改
安装好JRE之后,会提示安装JAVA,这个可以修改目录,建议安装到非C盘
全部安装完成后,我们开始配置环境变量
在系统变量中新建,名值按图所示(值为JRE的安装目录)
再新建一个变量,值为:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
最后,在Path变量中添加一个值:%JAVA_HOME%\bin
大功告成,我们可以在cmd中输入 java -version 来检测
使用eclipse:
上述步骤完成后,打开最初压缩包的第一个文件,点击里面的eclipse.exe
完美!✌
补充-Eclipse的使用技巧
这里记录一下eclipse的职业化使用技巧
- 修改编码:安装eclipse之后,首先要更改一下编码问题,点击Window=》Preferences=》找到Java常规的Workspace,然后右边修改下面的编码
- 自动提示:Window=》Preferences=》找到Java的Content Assist,右边有一个Auto activation triggers for Javadoc,然后在对应位置(小数点后面)输入a~zA~Z,
- 文件注释模板:Window=》Preferences=》找到Java的code Template,然后在Comments(注释)中,双击file,然后修改模板,像是下面这样。
/*
* luoluo公司 版权所有 2020-2025.
*/
- 类注释模板:还是在刚才的地方,双击file下面的Types来修改类注释模板。这两个模板修改完了之后,记得勾上下面的那个“自动为新方法和类型添加注释”,然后应用即可。
/**
*
* @author luoluo
* @version 1.0
*/
修改完两个模板之后,新建文件和类就可以自动生成一些有用的注释
- 调用方法注释:上面两个介绍了文件注释和类注释,在eclipse中还有方法注释,输入/*然后按下回车就可以生成方法注释,方法注释上可以写上方法中的细节。
/*
* luoluo公司 版权所有 2020-2025
*/
package com.ishash.test;
/**
* 用户登录类
* @author luoluo
* @version 1.0
*/
public class User {
/**
* 用户登录的方法
* @param username 用户名
* @param password 密码
* @return 登录成功返回true,登录失败返回false
*/
public boolean userLogin(String username,String password ) {
if("scott".equals(username)&&"tiger".equals(password)) {
return true;
}
return false;
}
}
- 生成JavaDoc文档:project=》生成JavaDoc,图1:选好项目,上面填上JDK路径;图2:写上如图语句防止乱码;图三:项目下生成doc目录下的html文档,浏览器查看即可。
- 快捷键: Ctrl + Shift + L 查看快捷键
快捷键 | 描述 |
---|---|
编辑 | |
Ctrl+1 | 快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如import类、try catch包围等) |
Ctrl+Shift+F | 格式化当前代码 |
Ctrl+Shift+M | 添加类的import导入 |
Ctrl+Shift+O | 组织类的import导入(既有Ctrl+Shift+M的作用,又可以帮你去除没用的导入,很有用) |
Ctrl+Y | 重做(与撤销Ctrl+Z相反) |
Alt+/ | 内容辅助(帮你省了多少次键盘敲打,太常用了) |
Ctrl+D | 删除当前行或者多行 |
Alt+↓ | 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) |
Alt+↑ | 当前行和上面一行交互位置(同上) |
Ctrl+Alt+↓ | 复制当前行到下一行(复制增加) |
Ctrl+Alt+↑ | 复制当前行到上一行(复制增加) |
Shift+Enter | 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后) |
Ctrl+/ | 注释当前行,再按则取消注释 |
选择 | |
Alt+Shift+↑ | 选择封装元素 |
Alt+Shift+← | 选择上一个元素 |
Alt+Shift+→ | 选择下一个元素 |
Shift+← | 从光标处开始往左选择字符 |
Shift+→ | 从光标处开始往右选择字符 |
Ctrl+Shift+← | 选中光标左边的单词 |
Ctrl+Shift+→ | 选中光标右边的单词 |
移动 | |
Ctrl+← | 光标移到左边单词的开头,相当于vim的b |
Ctrl+→ | 光标移到右边单词的末尾,相当于vim的e |
搜索 | |
Ctrl+K | 参照选中的Word快速定位到下一个(如果没有选中word,则搜索上一次使用搜索的word) |
Ctrl+Shift+K | 参照选中的Word快速定位到上一个 |
Ctrl+J | 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在状态栏中显示没有找到了,查一个单词时,特别实用,要退出这个模式,按escape建) |
Ctrl+Shift+J | 反向增量查找(和上条相同,只不过是从后往前查) |
Ctrl+Shift+U | 列出所有包含字符串的行 |
Ctrl+H | 打开搜索对话框 |
Ctrl+G | 工作区中的声明 |
Ctrl+Shift+G | 工作区中的引用 |
导航 | |
Ctrl+Shift+T | 搜索类(包括工程和关联的第三jar包) |
Ctrl+Shift+R | 搜索工程中的文件 |
Ctrl+E | 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示) |
F4 | 打开类型层次结构 |
F3 | 跳转到声明处 |
Alt+← | 前一个编辑的页面 |
Alt+→ | 下一个编辑的页面(当然是针对上面那条来说了) |
Ctrl+PageUp/PageDown | 在编辑器中,切换已经打开的文件 |
调试 | |
F5 | 单步跳入 |
F6 | 单步跳过 |
F7 | 单步返回 |
F8 | 继续 |
Ctrl+Shift+D | 显示变量的值 |
Ctrl+Shift+B | 在当前行设置或者去掉断点 |
Ctrl+R | 运行至行(超好用,可以节省好多的断点) |
重构(一般重构的快捷键都是Alt+Shift开头的了) | |
Alt+Shift+R | 重命名方法名、属性或者变量名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力) |
Alt+Shift+M | 把一段函数内的代码抽取成方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用) |
Alt+Shift+C | 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定) |
Alt+Shift+L | 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候) |
Alt+Shift+F | 把Class中的local变量变为field变量 (比较实用的功能) |
Alt+Shift+I | 合并变量(可能这样说有点不妥Inline) |
Alt+Shift+V | 移动函数和变量(不怎么常用) |
Alt+Shift+Z | 重构的后悔药(Undo) |
其他 | |
Alt+Enter | 显示当前选择资源的属性,windows下的查看文件的属性就是这个快捷键,通常用来查看文件在windows中的实际路径 |
Ctrl+↑ | 文本编辑器 上滚行 |
Ctrl+↓ | 文本编辑器 下滚行 |
Ctrl+M | 最大化当前的Edit或View (再按则反之) |
Ctrl+O | 快速显示 OutLine(不开Outline窗口的同学,这个快捷键是必不可少的) |
Ctrl+T | 快速显示当前类的继承结构 |
Ctrl+W | 关闭当前Editer(windows下关闭打开的对话框也是这个,还有qq、旺旺、浏览器等都是) |
Ctrl+L | 文本编辑器 转至行 |
F2 | 显示工具提示描述 |
- 项目导出:右键点击工程,选择export导出,选择Java下可运行的JAR文件,启动配置选择该类名-项目名,选择路径即可
第一个程序:
应用程序:
在eclipse中创建一个java项目,再在项目下创建一个包,在包的下面创建一个类,输入以下代码,运行,即可开到久违的Hello World!
注释:
- 任何Java程序都必须以类的形式出现,一个程序中可以定义若干个类,但只能定义一个public类。
- 如果一个程序中只定义了一个public类,那么这个类名也一定是文件名,否则编译会出错!
- 在Java编程中,每一个应用程序都必须包含一个main主方法,它是程序的切入点,public static void 不可缺少!
applet程序:
如上新建项目,输入以下代码,右击java文件,按照applet方式运行,即可成功运行applet小程序
- 一个类one继承自 Applet 类,有个paint方法
关于java注释:
- //……:单行注释
- /*……*/:多行注释
- /**……*/:文档注释,会被javadoc.exe文档工具读取,生成标准的HTML文档
符号集:
标识符(不做深究)
用户为程序的各部分所定义的名称
运算符(不做深究)
各种运算的符号
分隔符(不做深究)
程序中起分隔作用的符号,如空格、逗号等
常量(不做深究)
这里主要是指标识符常量
关键字:
java数据类型及其在定义时使用的关键字:
命名惯例如下:
- 包名应为名词或名词性短语,全部小写
- 类名、接口名应为名词或名词性短语,首字母大写
- 方法名和变量名应为动词或动宾短语,第一个单词首字母小写,其余各单词首字母大写
- 常量名应全部大写
字符类型:
- Java采用双字节的Unicode编码,取值范围 0-65535。Unicode字符集的前128个字符与ASCII字符集完全相同。
基本数据类型:
Java语言保留了八种基本数据类型(不携带属性,没有方法可以调用),其他都是引用类型。
- 基本类型就是直接赋值
- 引用类型一般都是通过new关键字创建对象,然后把这个对象赋予给相应的变量
八种基本数据类型:
可以说,在Java中,类、接口、数组是属于引用类型,其他类型是属于值类型。(例如String本质也是个类,所以String的传递是引用类型)
强制类型转换:
在变量前面加入
public class test {
public static void main(String args[])
{
int c=(int)59.4;
System.out.print(c);
}
}
59
类型转换:
Java语言的数据类型转换包括基本数据类型转换和引用类型转换,基本数据类型转换有下面这几种方式:
- 自动隐含的类型转换:要求类型兼容,在机器中占位少的类型向占位多的类型可以自动转换。容量小的类型转换为容量大的类型。注意,char在算术表达式中自动转换为无符号的short类型。(byte,short,char—> int —> long—> float —> double )
- 表达式类型转换:Java整型、浮点型、字符型数据可以混合运算,在运算之前,不同类型的数据先转化为同一种类型然后再进行计算
- 强制转换:指从在机器中占位多的类型向占位少的类型转换,这种转换可能导致计算精度的下降和数据溢出(overflow)
程序流程控制:
与c++大致相同,不做详细记录
break和continue存在一个标号概念:即在break或者continue后面加一个标号,就可表明对哪个循环操作(在对应循环写上标号)
package 测试;
public class test {
public static void main(String args[])
{
int c=1;
pi:for(c=1;c<10;c++)
{
for(int a=0;a<5;a++)
{
System.out.print(c);
if(c==3)
break pi;
}
}
}
}
11111222223
类与对象:
[类修饰符] class 类名 [extends 父类名] [implements 接口列表]
{
数据成员
成员方法
}
属性是静态特征
方法是动态特征
Java类库:
要想掌握好Java的面向对象编程技术,编写高质量的程序,必须对Java的类库有足够多的了解。
使用import导入一些包,即可使用该类库
下面简单介绍一些常见类库:
java.lang
java.lang是java语言的核心类库,包含了运行java必不可少的系统类,如基本数据类型、基本数据函数、字符串处理、线程、异常处理类等。每个java程序运行时,系统都会自动引入java.lang包,所以这个包的加载是缺省的
java.io
一些基本输入输出流,文件输入输出流,管道输入输出流等
java.awt
java语言用来构建图形用户界面(GUI)的类库,包含很多界面元素和资源
java.awt.event
使得程序可以用不同的方式来处理不同类型的事件,并使每个图形界面的元素本身可以拥有处理它上面事件的能力
java.awt.image
处理和操纵来自于网上的图片
java.applet
用来实现运行于Internet浏览器中的java applet的工具类库
java.net
用来实现网络功能的类库
java.rmi/java.rmi.registry/java.rmi.server
实现RMI功能(远程方法调用),用户可以在远程计算机上创建对象,在本地计算机上使用这个对象
java.util
一些低级的实用工具
java.sql
实现JDBC的类库,使java程序访问不同种类的数据库
java.security/java.security.acl/java.security.interfaces
提供了更完善的java程序安全性的控制和管理
java.awt.peer
实现java跨平台特性的手段之一
java.util.zip
用来实现文件压缩功能
java.awt.datatransfer
提供了处理数据传输的工具类,包括剪贴板,字符串发送器等
java.lang.reflect
提供了用于反射对象的工具
java.corba/java.corba.orb
这两个包将CORBA(公共对象请求代理体系结构)嵌入到java环境中,使得java可以存取、调用CORBA对象,并与CORBA对象共同工作。
创建和使用对象:
package 测试;
import java.applet.Applet;
import java.awt.Graphics;
class Dogs //定义一个类
{
//以下三行定义Dogs类的数据成员
public String name;
public int weight;
public int height;
//以下六行是Dogs类的成员方法showDogs()的定义
public void showDog(Graphics g,int x,int y)
{
g.drawString("姓名:"+name, x, y);
g.drawString("重量:"+weight, x, y+20);
g.drawString("高度:"+height, x, y+40);
}
}
public class test extends Applet {
public void paint(Graphics g)
{
//以下为创建对象
Dogs dane; //声明dane为属于Dogs类的引用变量
dane=new Dogs(); //创建由dane引用的Dogs对象
Dogs setter=new Dogs(); //创建引用变量setter引用的Dogs对象
//以下六句是通过引用变量将一组值赋给对象的数据成员
dane.name="小旺财";
dane.weight=100;
dane.height=23;
setter.name="小嘟嘟";
setter.weight=120;
setter.height=30;
//以下两行是通过引用变量引用对象的成员方法
dane.showDog(g, 25, 25);
setter.showDog(g, 25, 120);
}
}
这里要特别区分创建引用和创建对象
Apple a = new Apple(); //创建了引用也创建了对象。
Fruit f; //创建了引用
f = new Fruit(); //创建了对象
内存分布如下
初始化和构造:
public Dogs(String cName,int cWeight,int cHeight)
{
name=cName;
weight=cWeight;
height=cHeight;
}
类修饰符:
- 无修饰符:只能配同一个包里的类使用
- public:声明这个类是公共类,不但可供他所在包的其他类使用,也可供其他包的类使用。java程序中,只能有一个public类。
- final:声明这个类是最终类,不允许其他类所继承。
- abstract:声明这个类是抽象类,刻画了研究对象公有特征,并通过继承机制将这些特征传送它的派生类
注意:一个类可以有多个修饰符,顺序也没有影响,但是不能修饰为 final abstract
数据成员:
数据成员就是类的静态特征
[修饰符] 数据成员类型 数据成员名称
我们来了解两个比较特殊的修饰符
static 静态数据成员:
static修饰的数据成员被保存在一个内存区的公共存储单元中,可以通过类名加点操作符来访问它。
静态数据成员的初始化可以由用户在定义时进行,也可以由静态初始化器来完成。
Class Cc
{
static int n;
Static //静态初始化器
{
n=20; //初始化静态数据成员n
}
}
final修饰的最终数据成员:
final修饰的数据成员被限定为最终数据成员,它可以在声明时进行初始化,也可以通过构造方法赋值,但不能在程序的其他部分赋值,它的值在程序的整个执行过程中是不变的,
所以也可以说final修饰的数据成员是标识符常量。
成员方法:
[修饰符] 返回值的类型 成员方法名(形式参数表) throw[异常表]
{
说明部分
执行语句部分
}
注意,JAVA进行函数调用中传递参数时遵循值传递原则,不是引用传递。程序中执行到引用成员方法时,Java把实参值拷贝到一个临时的存储区(栈)中,形参的任何修改都在栈中进行,当退出该成员方法时,Java自动清除栈中的内容。(但是注意,参数为数组则是引用传递:每个Java数组类型都有java.lang.Object类中的所有方法的实现。ObjectAPI和所有Java对象一样,数组是通过值传递的.但是值是对数组的引用。真正的引用传递涉及传递变量的地址,以便可以更新变量。)
如果一个方法返回一个null(void),系统会自动在方法中加上语句return,用户不必写return语句
成员方法的引用方式
- 方法语句:add(3,4)
- 方法表达式:f3=f2+add(4,2)
- 方法作为参数:add(a,add(6,5))
- 通过对象来引用:dane.showDog(g,25,25)
递归方法
用static修饰的静态方法
- static方法只能访问static数据成员,不能访问非static数据成员,但非static方法可以访问static数据成员
- static方法只能访问static方法,不能访问非static方法,但非static方法可以访问static方法
- static方法是属于整个类的,而非static方法是属于某个对象的方法。
- 引用静态方法时,可以使用对象名做前缀,也可以使用类名做前缀。
用final修饰的最终方法
将成员方法修饰为最终方法
子类不允许修改成员方法,只能使用,不能修改
用native修饰的本地方法
native修饰的方法称为本地方法,使用此类方法的目的语言是将其他语言嵌入到Java语言中。
消息、继承与多态:
消息
访问控制
公共访问控制符public
可以在不同包中调用类创建对象
缺省访问控制符
包中类是可见的
- 类内的数据成员和成员方法如果没有访问控制符来限定,也具有“友好访问”的特性,它们也具有包访问性,可以被同一个包中的其他类所访问和引用。
私有访问控制符private
private修饰的数据成员或成员方法只能被该类自身访问和修改——最高保护级别
- 用private修饰的数据成员或成员方法只能被该类自身所访问和修改,而不能被任何其他类(包括该类的子类)来访问和引用。它提供了最高的保护级别。当其他类希望获取或修改私有成员时,需要借助于类的方法来实现。
保护访问控制符protected
用protected修饰的成员变量可以被三种类引用:该类自身,与它在同一个包中的其他类,在其他包中的该类的子类
- 用protected修饰的成员变量可以被三种类引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类。使用protected修饰符的主要作用是允许其他包中的它的子类来访问父类的特定属性。
多态
重载
覆盖
继承
对象转型
但是如果子类将父类的某方法实现了覆盖,那么父类引用调用该方法的话是实现子类的该方法的效果(父类的方法已经不在内存中存在了)
instanceof 操作符判断一个实例对象是否属于一个类。instanceof 的语法格式如下:Ø 对象 instanceof 类名Ø 返回值为布尔值( true 、 false )Ø instanceof 是 java 关键字
this与super
this
- 用来访问当前对象的数据成员
- 用来访问当前对象的成员方法
- 当有重载的构造方法时,用来引用同类的其他构造方法:this(参数)
super
- 用来访问直接父类隐藏的数据成员
- 用来访问直接父类隐藏的成员方法
- 用来调用直接父类的构造方法:super(参数)
抽象类
abstract修饰的类
接口
Java语言出于安全性和简化程序结构的考虑,不允许有多重继承,为了应对很多复杂的问题,于是有了接口的概念
[修饰符] interface 接口名[extends 父接口名列表]
{
常量数据成员声明
抽象方法声明
}
- interface是声明接口的关键字,可以把它看作一个特殊类
- 接口名要求符合Java表示符规定
- 修饰符有两种:public和默认。public修饰的接口是公共接口,可以被所有的类和接口使用;默认修饰符的接口只能被同一个包中的其他类和接口使用
- 父接口名列表。接口也具有继承性。定义一个接口时可以通过extends关键字声明该接口是某个已经存在的父接口的派生接口,它将继承父接口的所有属性和方法。一个接口可以有一个以上的父接口,他们之间用逗号分隔
- 常量数据成员声明。常量数据成员前可以有也可以没有修饰符。修饰符是 public final static 和 final static,都是final修饰的常量
- 抽象方法声明。接口中的方法都是abstract修饰的抽象方法。在接口中只能给出这些抽象方法的方法名、返回值类型和参数列表,而不能定义方法体。接口中的方法默认是 public abstract 方法。
一个类只能有一个父类,但是他可以同时实现若干个接口。
接口定义仅仅是实现某一特定功能的对外接口和规范,而不能真正实现这个功能,这个功能真正的实现是在“继承”这个接口的各个类中去完成的。
package 测试;
import java.applet.Applet;
import java.awt.Graphics;
interface Shapes //定义一个接口
{
abstract double getArea(); //自动被定义为public abstract
double getPerimeter(); //自动被定义为public abstract
}
class Square implements Shapes //类要实现接口
{
public int x,y; //画图时需要的起始位置坐标点
public int width,height;
public double getArea() {
return (width*height);
}
public double getPerimeter() {
return (2*width+2*height);
}
public Square(int x,int y,int width,int height)
{
this.x=x;
this.y=y;
this.width=width;
this.height=height;
}
}
class Triangle implements Shapes //类要实现接口
{
public int x,y;
public int width,height;
public double c;
public double getArea()
{
return (0.5*width*height);
}
public double getPerimeter()
{
return (width+height+c);
}
public Triangle(int x,int y,int base,int height)
{
this.x=x;
this.y=y;
width=base;
this.height=height;
c=Math.sqrt(width*width+height*height);
}
}
class Circle implements Shapes //类要实现接口
{
public int x,y;
public int width,height;
public double r;
public double getArea()
{
return (r*r*Math.PI);
}
public double getPerimeter()
{
return (2*Math.PI*r);
}
public Circle(int x,int y,int width,int height)
{
this.x=x;
this.y=y;
this.width=width;
this.height=height;
r=(double)width/2.0;
}
}
public class test extends Applet
{
Square Box=new Square(5,15,25,25);
Triangle tri=new Triangle(5,50,8,4);
Circle Oval=new Circle(5,90,25,25);
public void paint(Graphics g)
{
g.drawRect(Box.x, Box.y, Box.width, Box.height);
g.drawString("矩形的面积:"+Box.getArea(),50, 35);
g.drawString("矩形的周长:"+Box.getPerimeter(),50, 55);
g.drawString("三角形的面积:"+tri.getArea(),50, 75);
g.drawString("三角形的周长:"+tri.getPerimeter(),50, 95);
g.drawOval(Oval.x, Oval.y, Oval.width, Oval.height);
g.drawString("圆形的面积:"+Oval.getArea(),50, 115);
}
}
这里存在一个特殊情况
声明一个接口的变量(接口的引用)可以指向一个实现类(实现该接口的类)的实例,
但是该接口的变量不能使用实现类中有、接口中没有的方法(实现类中没有重写的方法、自添加的方法)
接口 引用变量=new 实现类() //实现类不能是抽象类
习题:
理解Java的基本概念(JVM、JDK、JRE),区分JavaSE、JavaEE、JavaME 的不同用途。
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。JDK的安装目录下面有五个文件个文件夹、一个src类库源码压缩包、和其他几个声明文件。在运行java 时起作用的是以下四个文件夹:bin:最主要的是编译器(javac.exe)、include:java和JVM交互用的头文件、lib:类库 、jre:java运行环境
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib合起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。
Java SE(Java Platform,Standard Edition)JavaSE即Java标准版,它是JavaEE和JavaME的基础,之前称为J2SE,用来开发C/S架构软件,通俗来讲,即开发电脑桌面应用软件,电脑上运行的软件,例如,Java应用程序开发平台Eclipse。
Java EE(Java Platform,Enterprise Edition)JavaEE即企业版,之前称为 J2EE,JavaEE是在JavaSE的基础上构建的,用来开发B/S架构软件,即开发企业级应用,例如,电子商务网站、ERP系统。JavaEE在JavaSE的基础进行了扩展,增加了一些更加便捷的应用框架。比如我们现在常用的Java开发三大框架Spring、Struts和Hibernate,我们可以应用这些框架轻松写出企业级的应用软件。
Java ME(Java Platform,Micro Edition)这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本能。主要用于开发移动设备软件和嵌入式设备软件,例如:手机游戏,电视机顶盒和打印机相关的嵌入式设备软件。
编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名是什么?
源代码扩展名为.java,而编译后的扩展名就是.class
javac 和 java 的关系
javac:是编译命令,将java源文件编译成.class字节码文件。当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
例如:javac hello.java
将生成hello.class文件。
java:是运行字节码文件;由java虚拟机对字节码进行解释和运行。运行时会启动jvm.加载运行时所需的类库,并对class文件进行执行.
例如:java hello
开发与运行Java程序需要经过的三个主要步骤是哪些?
编辑源程序 ,编译生成字节码 ,解释运行字节码
用dos端输出Hello world
新建一个文件,输入如下内容:
public class hello
{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
改后缀名为.java,成为一个java文件,即hello.java,使用命令
javac hello.java
将其编译成为一个.class的字节码文件,然后用命令:
java hello
注意javac后面跟文件名,而java后面跟主类名。
另外,如果任何输入都没问题还不能java运行,那就请 删除用户环境变量和系统环境变量中的classpath,重启CMD命令行窗口。(我被这个坑缠了半个小时)——参考网站Java在Dos端报错
Java占位符:
java语言的printf中允许有占位符的存在
第一部分先记录到这里
希望对你有帮助
欢迎访问我的博客:is-hash.com
商业转载 请联系作者获得授权,非商业转载 请标明出处