JDK的最重要命令行工具:
java: 启动JVM执行class
javac: Java编译器
jar: Java打包工具
javadoc: Java文档生成器
Java最核心的基础类库
java.lang.*;
java.io.*;
java.util.*;
java.sql.*;
JDK里面其他会有用处的包
java.text.*;
java.net.*;
javax.naming.*;
一般Java程序运行
javac *.java回车(编译)
java *(.java)(执行)
Applet小程序的运行
javac *.java回车
appletviewer *(.java)
appletviewer *.html(htm)
执行命令java 文件名(.*)其中文件名严格区分大小写
Tomcat 的目录结构
/bin 存放Windows平台以及Linux平台上启动和关闭Tomcat的脚本文件
/conf 存放Tomcat服务器的各种配置文件,其中最重要的配置文件是
server.xml
/server 包含3个子目录:classes、lib和webapps
/server/lib 存放Tomcat服务器所需的各种JAR文件(此目录下的JAR文件只可被Tomcat服务器访问)
/server/webapps 存放Tomcat自带的两个Web应用:admin应用和manager应用
/common/lib 存放Tomcat服务器以及所有Web应用都可以访问的JAR文件(此目录下的JAR文件可以被Tomcat服务器和所有的Web应用访问)
/shared/lib 存放所有Web应用都可以访问的JAR文件(此目录下的JAR文件可以被所有的Web应用访问,但不能被Tomcat服务器访问)
/logs 存放Tomcat日志文件
/webapps 当发布Web应用时,默认情况下把应用文件放于此目录下
/work Tomcat把由JSP生成的Servlet放于此目录下
对于一个应用程序来说,main方法是必需的,而且必须按照如上的格式来定义。Java解释器在没有生成任何实例的情况下,以main作为入口来执行程序。Java程序中可以定义多个类,每个类中可以定义多个方法,但是最多只能有一个公共类,main方法也只能有一个,作为程序的入口。main方法定义中,括号中的String args[]是传递给main方法的参数,参数名为args,它是String类的一个实例。参数可以为0个或多个,每个参数用“类名 参数名”来指定,多个参数间用逗号分隔。
在Java程序中声明变量后,需给该变量赋值。可用赋值语句来初始化变量——任何变量都不能没有初始值(否则,则无法通过编译)。
相对于一个方法的“局部”变量,如果在初始化之前想使用它,编译器会提示出错,如下面这样就是不允许的:
void f()
{
int i;
i=i+1;
}
运算符>>执行一个右移位(带符号),左边按符号位补0或1例如:
int a=16,b;
b=a>>2; //b=4
运算符>>>同样是执行一个右移位,只是它执行的是不带符号的移位。也就是说对以补码表示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0。
Java程序里,将一种数据类型的常数或变量转换到另外的一种数据类型,称为类型转换。类型转换有两种:自动类型转换(或称隐含类型转换)和强制类型转换。
在实际中常会将一种类型的值赋给另外一种变量类型。如果这两种类型是兼容的,Java将执行自动类型转换。
简单的说,当把占用位数较短的数据转化成占用位数较长的数据时,Java执行自动类型转换,不需要在程序中作特别的说明。例如,下面的语句把int型数据赋值给long型数据,在编译时不会发生任何错误:
int i=10;
long j=i;
不是所有的数据类型都允许隐含自动转换。例如,下面的语句把long型数据赋值给int型数据,在编译时就会发生错误:
long i=10;
int j=i;
这是因为当把占用位数较长的数据转化成占用位数较短的数据时,会出现信息丢失的情况,因而不能够自动转换。这时就需要利用强制类型转换,执行非兼容类型之间的类型转换。上面的语句写成下面的形式就不会发生错误:
long i=10;
int j=(int)i;
假若对主数据类型执行任何算术运算或按位运算,“比int小”的数据(char、byte、short)在正式执行运算之前,那些值会自动转换成int,这样一来,最终生成的值就是int类型。
整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。通常,表达式中最大的数据类型是决定了表达式最终结果大小的那个类型。例如:若将一个float值与一个double值相乘,结果就是double;如将一个int值和一个long值相加,则结果为long。
强制类型转换的格式是:
(数据类型)变量名
经过强制类型转换,将得到一个在“()”中声明的数据类型的数据,该数据是从指定变量所包含的数据转换而来的。值得注意的是,指定变量本身不会发生任何变化。
将占用位数较长的数据转化成占用位数较短的数据时,可能会造成数据超出较短数据类型的取值范围,造成“溢出”。如:
long i=10000000000;
int j=(int)i;
因为转换的结果已经超出了int型数据所能表示的最大整数(4294967295),造成溢出,产生了错误。
3.对象运算符(instanceof)
对象运算符instanceof用来判断一个对象是否是某一个类或者其子类的实例。如果对象是该类或者其子类的实例,返回ture;否则返回flase。
4.()和[ ]
括号运算符()的优先级是所有运算符中最高的,所以它可以改变表达式运算的先后顺序。在有些情况下,它可以表示方法或函数的调用。
方括号运算符[ ]是数组运算符。
5. .运算符
.运算符用于访问对象实例或者类的类成员函数。
6.new运算符
new运算符用于创建一个新的对象或者新的数组。
switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。
一个switch语句可以代替多个if—else语句组成的分支结构,而switch语句从思路上显得更清晰。
Java程序是由一个个类定义组成的,类有两个部分:属性和方法。属性描述类是什么,方法描述类做什么。任何对象都有独立的内存存储它的属性。类的所有的对象共享存贮在内存的方法。
换言之:方法是类的主要组成部分。在一个类中,程序的作用体现在方法中。
方法即是JAVA创建一个有名字的子程序。一个主方法和若干个子方法构成。主方法调用其他方法,其他方法间也可互相调用,同一个方法可被一个或多个方法调用任意次。
abs(x) x的绝对值(这个方法还有float,int和long型值的版本)
ceil(x) 不小于x的最小整数(向上取整)
exp(x) 指数方法e的x次幂
floor(x) 不大于x的最大整数(向下取整)
log(x) x的自然对数(以e为底)
max(x,y) 取x和y中较大者。
min (x,y) 取x和y中较小者。
pow (x,y) x的y次幂
sqrt (x) x的平方根