logo资料库

java从零基础到精通的整个详细笔记(带批注).doc

第1页 / 共174页
第2页 / 共174页
第3页 / 共174页
第4页 / 共174页
第5页 / 共174页
第6页 / 共174页
第7页 / 共174页
第8页 / 共174页
资料共174页,剩余部分请下载后查看
Java 笔记整理
包含内容
Unix
Java 基础,
数据库(Oracle jdbc Hibernate pl/sql),
web,
JSP,
Struts,
Ajax
Spring,
Ejb,
java和模式
张巍峰 编辑
20009.10
Linux/Unix笔记
用户:xiangf Pwd xiangf
Put mput上传多个Get mget下载多个
在linux下Jdk的安装
Vim 。bash-profile编辑
Core Java笔记
PATH:指定可执行程序(命令)在哪个目录。不同目录用(:)分开。--->SHELL
CLASSPATH:指定(jar文件)中间字节码文件在什么地方。由多个目录组成的集合。--->
Source .bash_profile:只能经过这条命令之后,才会让修改的变量生效。(csh)
3,运行时,一定在顶层包的同级目录下运行java命令,
(如果顶级包所在的目录已经被配置到CLASSPATH中的话可以在任意目录中启动 java命令)
运行命令java xxxx 类的名字--- 启动虚拟机
(一)语言:适合于internet
(二)变量:
String(字符串)复杂数据类型(类)
BigDecimal比double更精确,一般用于处理高精度运算。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)
3,大小写敏感。 4,没有长度限制。如:ArrayOutOfBoudle
XXXXXX;
XXXXXX;
(1) a;
XXXXXX;
XXXXXX;
4,分支
XXXXXXXXXXX;
XXXXXXXXXX;
XXXXXXXXXXXX;
XXXXXXXX;
/* for(int i=0;i
1,申请空间;(把值放到空间里,再把空间的地址给引用变量。)----创建父类对象
1,在普通方法里,指代当前对象引用(哪个对象调用该方法,this就指向该对象)
(4)初始化本类的实例变量(该类的所有属性);
(也就是会先执行static修饰的变量);
(访问的是父类的静态方法);
Object是Java里所有类的直接或间接父类,Object类里面的所有功能是所有java类共有的
Exception(异常):运行时的概念。
2)Exception:从代码的角度是程序员可以处理的问题;
1)声明抛出异常(消极的处理)
2)LinkedList集合类实现List接口,他底层是以链表实现的,查询慢,增删快,
(Key--value)不可重复且无序--可重复
Hashtable类实现Map接口:查询慢,线程安全
注意:如果需要定位,就得用“普通”的 for,在列表遍历期间无法删除集合对象。
=======图形界面(GUI)==================================
2,设置布局管理器
=======多线程========================================
Reader/Writer 字符流的父接口
((可以向下转换)) 与上面的(1)是相等,
BufferedReader/PrintWriter 有缓冲
ORACLE
1) nvl('hello','world')-----> 'hello'
2) select id,last_name,dept_id
3) select id,concat(last_name,first_name),dept
1) select sysdate from dual;
fm:在不引起歧义的情况下去掉前置的零和空格
1.等值连接(内连接) 条件: fk-----pk
1) select dept_id
2) select last_name,dept_id,start_date
--->select e.last_name,e.dept_id,e.start_date
Define Variable
1) define varname=value
2) accept varname type prompt ' ' hide //单
1.db structure
1) 约束前面是逗号就是表一级,
2) not null只能定义在列一级
3) 联合键只能定义在表一级
1) 表的列名,列数,类型靠子查询定
2) 主sql规定了列名,列的个数,不能定义列的类型
3) 可以制定约束
1) 表:存放描述数据库状态的数据
DML:
1) update luxw8
Transaction(事务):必须具有原子性
ACID:
A:原子性,加钱和减钱都要成功或都失败,保持原子性;
DDL:
2) nextval:
1) create view emp_v1
2) 复杂视图:里面包含了函数,连接,组函数
JDBC笔记
OracleDriver{
DB2Driver{
/com/kettas/jdbc/cfg/config.properties
2. read Student.class 读取类文件
3. Class c----> 获得Student类详细信息(类对象)
1. jdbc 六个步骤
2. 注册Driver的三种方式
3. ResultSet遍历
1) next()---->boolean
4. 三种execute方法的区别
4)使用pstm的环境
Transaction: 一组不可再分的sql命令,根具体业务有关
1 PreparedStatement
3 ThreadLocal
1) app: showinterface
4. 事务处理conn.commit 或conn.rollback;
Repeatable read
1) 手动控制事务的大小,节约了db服务器的内存
2) 事务结束时写日志,减少了查找失败事务的时间
3) 删除备份数据库表里的约束,减少数据进入时验证的时间
4) 降低数据库的隔离级别,设置到read uncommited
5) 插入时选择PreparedStatement,执行同构sql,减少编译
ResultSet.TYPE_SCROLL_INSENCITIVE
ResultSet.CONCUR_UPDABLE
1.db--sql
2. db
3. dao( CarDao--->jdbc_car , LicenseDao--->jdbc_li
2. db
3 dao
Object query(value){
1)API 2) ACID 3)并发问题 4)隔离级别
1) Batch
2)数据分页
Hibernate
2) relation db -----> create table
4) configure file ----> classpath(src)
5) application ( base hibernate )
1) create table hilotable
2)
2) 没有写property-ref, 没有写cascade
1. 标签: 类驱动表,真实反应Java里的类,即:以类为主
1.javabean
2 db table
1. 修改配置文件
1) 查询同一个对象,不用再访问数据库,
2) 脏的检测,当检测到实体集合与深度拷贝集合里的数据不同时,会把改变的对象同步到数据库里。
1 many-to-many
1) java
2)db
2. hibernate---->ormapping (object-->db)
3.Persist
2) 一级cache(Session)----> 集合
2) 利用持久化对象的扩散
A--->B--->C--->D
1) query by id ( get() or load() )
1. Student s=sess.get(Student.class,id,LockMode.U
LockMode.NONE: 查询时先在cache(缓存)里找,如果没有,再到db里加载 无
1. javabean
2. db
3. mapping file
4. change config file
5. dao
6. biz
7. view
8. test
1.optimistic-lock
2. 1)javabean ---> extends
3. valuetype 值对象 (没有oid的java对象)
1) one value ---> component (两个类一张表)
2) one collection (两个类两张表)
3) one map
1) Company c=sess.get(Company.class,18);
2) query oid;
4) Criteria
5) 本地sql
2. 支持多态查询
Iterator et=q.iterate(); --->效率高
4. 数据分页:
6. 参数绑定:
7. 连接:
8. 组函数
12. batch update
13. SQL语句是对数据库的表操作,HQL语句是对类的操作。
Session
_new _self _blank _top 如果不加_表示一个f
JavaScript_1:============
========= 词法特性 =================
JAVA:
JavaScript_2:==================
|- 0,非0 | null 和非null
6 作为变量函数
servlet
|- webapps : 最重要的一个目录,其下放置各种Servlet文件、网
|- WEB-INF目录
|- web.xml 配置文件
1 Servlet接口、GenericServlet类、HttpServlet类 :
2 使用GenericServlet实例 :
3 使用HttpServlet简单实例 :
com.kettas.servlet.LoginServlet
4 请求转发 :
(1) 第一个servlet,负责业务
(2) 第二个servlet,负责显示
(3) web.xml片段 :
5 关于Cookie, 在客户端浏览器保存用户状态的一种机制
6 关于HttpSession, 在服务器端保存用户状态的一种机制
7 ServletConfig对象和ServletContext对象
// 覆盖之前调用父类的这个方法, 否则ServletConfig对象会丢失
1 : 通过web.xml文件,在ServletContext对象中存入数据
jdbc.driver
8 监听事件和过滤器
监听包括三种情况,分别是HttpRequest、Session、ServletContext监听。
常用的是implements servletContextListener(全局变量)两个方法 p
Session监听事件所示 :
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import com.kettas.upp02.util.Constant;
public class SessionListener implements HttpSessio
public void sessionCreated(HttpSessionEvent ent)
HttpSession session = ent.getSession();
synchronized (this) {
ServletContext ctx = session.getServletContext(
Integer counter = (Integer) ctx.getAttribute("s
ctx.setAttribute("sessionCount", counter.intVal
System.out.println(Constant.LOGO + "SessionCoun
+ (counter.intValue() + 1));
}}
public void sessionDestroyed(HttpSessionEvent ent
HttpSession session = ent.getSession();
synchronized (this) {
ServletContext ctx = session.getServletContext(
Integer counter = (Integer) ctx.getAttribute("s
ctx.setAttribute("sessionCount", counter.intVal
System.out.println(Constant.LOGO + "SessionCoun
+ (counter.intValue() - 1));
}
}}
在web.xml文件中配置如下 :
shop. SessionListener
其他两个监听事件的实现同上并无二致。
过滤器 // 实现Filter接口
import java.io.IOException;
(1)加载和实例化:找到servlet类的位置通过类加载器加载Servlet类,成功加载后,容器通过
(2)初始化: 容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Ser
Servlet采用多线程来处理多个请求同时访问,Servelet容器维护了一个线程池来服务请求。
线程池实际上是等待执行代码的一组线程叫做工作者线程(WorkerThread),Servlet容器使
当容器收到一个访问Servlet的请求,调度者线程从线程池中选出一个工作者线程,将请求传递给该线程,
当这个线程正在执行的时候,容器收到另外一个请求,调度者线程将从池中选出另外一个工作者线程来服务新的请
当容器同时收到对同一Servlet的多个请求,那这个Servlet的service方法将在多线程中并
3)、如何现实servlet 的单线程模式
<%@ page isThreadSafe=”false”%>
1) 表达式标签 <%= 1 + 1 %>
3) 普通脚本 : <% %> 普通脚本是不能嵌套的
<%= 1+ 1 %>
3 动作元素
<%@page contentType="text/html" %>
Action ---> Biz
4) 编写下一个JSP
ProductBiz
QuerProductAction
1) 获取struts的jar包 --> 拷贝到WEB-INF/lib
3) 确保struts用到的配置文件被放置到指定的位置 . struts1.2.7/webapps/
3) 在jsp中使用资源文件的内容 . 编程时使用key 显示时看到的是value
2) 在ActionForm里编写验证代码 . @Override validate() Actio
3) 编写Action对象.execute方法 |-> 调用biz对象的方法. |->
---> Action ---> Biz ---> Dao
XXXXXXXX
ResultSet
1) 程序员负责编写需求说明书 . 说明
1) 保证validation.jar , jakarta-ora.jar
ActionForm
DynaActionForm
Struts 2
Ajax部分
1. javascript 创建XMLHttpRequest 对象并用它与web server 通信
1. 创建XMLHttpRequest 对象xhr;
4. (在使用POST 方法使用)使用xhr 的setRequestHeader 设置请求头。通常设
5. 使用xhr 的send 方法发送请求;
1) 获取ajax核心对象XMLHttpRequest的标准JavaScript函数 :
2) 实例 : 在网页中验证电子邮箱输入的格式
3) 向服务器请求获得xml文件(对象)
7 封装ajax的调用步骤 :
8 采用kettasAjax对象,采用不同的方式向服务器发送不同类型的数据
9 页面部分更新,只更新表格部分
10于Ajax中的Json
Json 是一种线上协议,轻量级的xml 一种文体格式
// ss.getProducts()方法返回一个商品对象的集合
true
(2) 实例 : 人员管理
<%@taglib uri="http://struts.apache.org/tags-html"
${error}
<%@taglib uri="http://struts.apache.org/tags-bean"
/**实现HibernateCallback()方法所传的参数必须是final的,
Object object = getHibernateTemplate().executeFi
//通过session获得标准
//如果以下这3个参数都不为空的时候执行
【JAVA 资料免豆下载】20 个免豆精品资料汇总+自学视频 首先,对于那些不常常混迹于 51cto 但是又有需求的的用户来说,下载豆是一个非常奢侈的 东西。为了方便广大用户更好的学习,最近小弟整理了一批免积分下载的 Java 优质资料, 因资料众多,一一将资料上传上来需要时间,先将下载目录分享给大家,希望能帮助到大家 资源名称 资源地址 《21 天学通 Java》(ppt+习题答案+源代码) http://down.51cto.com/data/418401 数据结构与算法-JAVA 语言版【PDF】 http://down.51cto.com/data/348618 Java 算法大全(近 100 种算法打包下载) http://down.51cto.com/data/562582 Java 编程思想《Thinking In Java》中文版(第 4 版)【PDF】 http://down.51cto.com/data/131931 spring_MVC 中文教程 pdf http://down.51cto.com/data/314887 java 入门,非常的浅显易懂.rar http://down.51cto.com/data/50689 Hibernate 中文 api 文档[CHM 格式] http://down.51cto.com/data/199074 免豆下 载 Java 零基础学习程序设计+帮助文档(适合初 学者) http://down.51cto.com/data/636058 一个牛人给 java 初学者的建议【技术文档】 http://down.51cto.com/data/758919 SSI 框架搭建(struts2+spring3+ibatis)【技 术文档】 《Java 程序员,上班那些事儿》Java 程序员 职业指导电子书 http://down.51cto.com/data/444157 http://down.51cto.com/data/465533 一步一步跟我学 java 图文并茂清晰版 http://down.51cto.com/data/134024 计算机科学丛书 JAVA 编程思想第四版【PDF】 http://down.51cto.com/data/154565 Java 学习笔记(必看经典) http://down.51cto.com/data/339260 高手总结 java 常用 API(免费下载) http://down.51cto.com/data/430508 Java 经典编程实例源码 http://down.51cto.com/zt/27 循序渐进学 java 视频教程之基础知识及概念 http://down.51cto.com/zt/135 《JAVA 开发实战经典》随书视频及源码 http://down.51cto.com/zt/296 Java 自学视频教程(共 107 集) http://down.51cto.com/zt/308 专题下 载 推荐视 频 1
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java 和模式 张巍峰 编辑 20009.10 inode :存储编号(地址) ls -k:查看磁盘分区 Linux/Unix 笔记 2
ls -l ls -li:显示当前文件的 inode 号。 目录的大小跟文件的大小有关,跟目录里的文件(目录)数 量无关。 一行多个命令的话,中间用分号分开。如:pwd;cal;date last | grep pts/13 表示查看 pts/13 登陆服务器的记录。 find . -mtime -10 -print -10:表示 10 天以内的, +10:表示 10 天以前的, .:表示当前路径 -mtime:最后一次修改时间。 -print:表示输出到显示器(可有可没有)。 -user 0:表示 UID 是 0。 size+400:表示大于 400*0.5K ,-400 表示小于 400*0.5K -atime:表示最后一次访问时间。 grep:在文件里查找符合要求的那一行。通常用在管道(|) 后面,表示对 | 前面的输出做查找。 如:cat /etc/passwd | gred liu | sort sort:表示排序。 进程是作业,作业是进程。 前台就是终端,后台就是服务器。 当杀掉父进程,前台子进程会消失,,后台作业不依赖于任何 终端,会继续运行 LINUX 常用命令(基础) 1. man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ls 就可以查看 ls 相关的用法 注:按 q 键或者 ctrl+c 退出,在 linux 下可以使用 ctrl+c 终止当前程序运行。 2. ls 查看目录或者文件的属*,列举出任一目录下面的文件 eg: ls /usr/man a.d 表示目录(directory),如果是一个"-"表示是文件,如果 是 l 则表示是一个连接文件(link) b.表示文件或者目录许可权限.分别用可读(r),可写(w),可 运行(x)。 3. cp 拷贝文件 eg: cp filename1 filename2 // 把 filename1 拷 贝 成 filename2 cp 1.c netseek/2.c //将 1.c 拷到 netseek 目录下命名为 2.c 4. rm 删除文件和目录 eg: rm 1.c //将 1.c 这个文件删除 5. mv 移走目录或者改文件名 eg: mv filename1 filename2 // 将 filename1 改 名 为 filename2 mv qib.tgz ../qib.tgz //移到上一级目录 6. cd 改变当前目录 pwd 查看当前所在目录完整路径 eg: pwd //查看当前所在目录路径 cd netseek //进入 netseek 这个目录 cd //退出当前目录 7. cat,more 命令 将某个文件的内容显示出来。两个命令所不同的是:cat 把文 件内容一直打印出来,而 more 则分屏显示 eg; cat>1.c //就可以把代码粘帖到 1.c 文件里,按 ctrl+d 保存代码。 cat 1.c 或 more 1.c //都可以查看里面的内容。 gcc -o 1 1.c //将 1.c 编译成.exe 文件,我们可以用此命编 译出代码。 8.chmod 命 令 权 限 修 改 用 法 : chmod 一 位 8 进 制 数 filename。 eg: chmod u+x filenmame //只想给自己运行,别人只能读 //u 表示文件主人, g 表示文件文件所在组。 o 表示其他 人 ;r 表可读,w 表可写,x 表可以运行 chmod g+x filename //同组的人来执行 9. clear,date 命令 clear:清屏,相当与 DOS 下的 cls;date:显示当前时间。 10. mount 加载一个硬件设备 用法:mount [参数] 要加载的设备 载入点 /*查找当前目录下面所有文件里 eg: mount /dev/cdrom cd /mnt/cdrom //进入光盘目录 11. su 在不退出登陆的情况下,切换到另外一个人的身份 用法: su -l 用户名(如果用户名缺省,则切换到 root 状态) eg:su -l netseek (切换到 netseek 这个用户,将提示输入 密码) 12.whoami,whereis,which,id //whoami:确认自己身份 //whereis:查询命令所在目录以及帮助文档所在目录 //which:查询该命令所在目录(类似 whereis) //id:打印出自己的 UID 以及 GID。(UID:用户身份唯一标识。 GID:用户组身份唯一标识。每一个用户只能有一个唯一的 UID 和 GID) eg: whoami //显示你自已登陆的用户名 whereis bin 显 示 bin 所 在 的 目 录 , 将 显 示 为 : /usr/local/bin which bin 13. grep,find grep:文本内容搜索;find:文件或者目录名以及权限属主等 匹配搜索 eg: grep success * 面含有 success 字符的文件 14. kill 可以杀死某个正在进行或者已经是 dest 状态的进 程 eg; ps ax 15. passwd 可以设置口令 16. history 用户用过的命令 eg: history //可以显示用户过去使用的命令 17. !! 执行最近一次的命令 18. mkdir 命令 eg: mkdir netseek //创建 netseek 这个目录 19. tar 解压命令 eg: tar -zxvf nmap-3.45.tgz //将这个解压到 nmap-3.45 这个目录里 20. finger 可以让使用者查询一些其他使用者的资料 eg: finger //查看所用用户的使用资料 finger root //查看 root 的资料 ftp 上传下载 ftp 192.168.1.100 用户:xiangf Pwd xiangf Put mput 上传多个 Get mget 下载多个 在 linux 下 Jdk 的安装 1. 先从网上下载 jdk(jdk-1_5_0_02-linux-i586.rpm) 进入安装目录 #cd #cp #cd 给所有用户添加可执行的权限 #chmod #./jdk-1_5_0_02-linux-i586.rpm.bin 此时会生成文件 jdk-1_5_0_02-linux-i586.rpm,同样给所有 用户添加可执行的权限 #chmod 安装程序 #rpm 出现安装协议等,按接受即可 2.设置环境变量。 #vi /etc/profile 在最后面加入 #set JAVA_HOME=/usr/java/jdk-1_5_0_02 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export CLASSPATH 保存退出。 3.检查 JDK 是否安装成功。 #java 如果看到 JVM 版本及相关信息,即安装成功! bash-profile 是配置文件,配置 java-home,path,classpath 等 。空格。bash-profile 从新启动 Vim 。bash-profile 编辑 Javac 把.java 编译成。Class java –d.按包的名字自动生成相对应的 /home jdk-1_5_0_02-linux-i586.rpm /usr/local +x jdk-1_5_0_02-linux-i586.rpm.bin +x jdk-1_5_0_02-linux-i586.rpm -ivh jdk-1_5_0_02-linux-i586.rpm java 运行。Class 文件 java environment /usr/local JAVA_HOME PATH -version 人--->源文件--->编译器--->程序--->CPU Core Java 笔记 3
编译器: 1,编译执行:源文件--->可执行代码。如:C/C++语言。 执行效率高。可移植性差。---->开发成本的增加。 2,解释执行:源文件--->体系结构中立的中间代码( .class)--- >解释器 --->机器指令。 如 :java 语言 执行效率低。 可移植性好。----> 对硬件要求高。 JAVA 语言: (源文件)--->(编译器 javac.exe)--->中间码--->(虚拟机 java.exe)--->机器指令--->CPU (编译) (解释) .java ----> .class ---> 可执行文件 PATH:指定可执行程序(命令)在哪个目录。不同目录用(:)分开。--->SHELL JAVA_HOME:指定 JDK 的安装目录。给其它应用程序看的。 CLASSPATH:指定(jar 文件)中间字节码文件在什么地方。由多个目录组成的集合。---> 让虚拟机可以找到中间字节码文件。就是可以找到.class 文件 服务器上 csh:.cshrc bsh:.profile 客户端上。bash:.bash_profile 1 # .bash_profile 3 # Get the aliases and functions 4 if [ -f ~/.bashrc ]; then 5 6 fi 8 # User specific environment and startup programs //if 的结尾。 . ~/.bashrc //#代表注释。 9 JAVA_HOME=/opt/jdk1.5.0_15 JDK 安装路径--- JDK = JRE {JVM(硬件)+编译器( 软件)} +编译器工具+类库 10 PATH=$JAVA_HOME/bin:$PATH:$HOME/bin 11 CLASSPATH=.:java/jar/servlet-api.jar:/java/jar/jsp-api.jar 12 13 export PATH CLASSPATH JAVA_HOME //使三个变量变成全局变量。。 Source .bash_profile:只能经过这条命令之后,才会让修改的变量生效。(csh) . .bash_profile。 只能经过这条命令之后,才会让修改的变量生效。 (bash) java -version:查看虚拟机的版本号。 //系统定义的$PATH 启动命令 //类路径 2.,编写第一个 JAVA 程序。 1),以.java 结尾的文件。 2),所有内容,都要写在一个类中(类名要和文件名想同,包括大小写在内) pbulic class HelloWorld{......} 3),main 函数是程序执行的入口,程序从 main 函数的第一条语句开始执行,执行到 main 函数结束为止。 public static void main(String argvs[]){ } 4),输出语句:System.out.println( 5),每条语句以(;)结尾 ); 先指定到源程序存放的目录,然后进行以下步骤运行。 编译:javac 命令。如:javac -d . HelloWorld.java -->生成 HelloWorld.class 类文件 启动虚拟机(java),运行类文件。如:java com.work.core.HelloWorld 后面的.class 省略,无需写成 java com.work.core.HelloWorld.class 包(package): 1,package com.kettas.corejava; //包声明。 2,必须保证类文件一定放在相应的目录结构中,HelloWorld.class 放在 com/kettas/corejava 目录中。 3,运行时,一定在顶层包的同级目录下运行 java 命令, 例如:com(shell 界面里运行)java com.kettas.corejava.HelloWorld (如果顶级包所在的目录已经被配置到 CLASSPATH 中的话可以在任意目录中启动 java 命令) 1,类文件太多,不好管理。 2,解决重名。 javac -d . HelloWorld.java 运行命令 java xxxx 类的名字--- 启动虚拟机 (一)语言:适合于 internet 1,跨平台的 (属于解释执行的语言) 2,更容易开发出安全的程序: (不仅能够编译类文件,同时还能创建包结构) 1)垃圾回收器,(帮助程序员管理内存) 2)取消了指针,对数组越界进行检查 3)安全检查机制,(对生成的字节码检测,如:包结构检测) Hash 算法,,只要加密的源是一样的。经过 Hash 运算之后,Hash 值都一样。 加密的源如果不一样了,经过 Hash 运算之后,值都不一样。 (二)变量: 如: 学生,姓名,性别,age 帐户,ID,password,balance,username 内存:没记忆,容量小,成本高,存储变量数据,最小逻辑单位:byte(字节)=8bit(位) 4
外存(硬盘):有记忆,容量大,成本低,存储文件数据 1,变量声明:给变量起名,是给变量选择一种数据类型。如:int age; 不同的变量, 1)参与的运算是不同的, 2)存储的值是不同的, 3)需要的存储空间的大小也不同, java 数据类型: 简单数据类型(原始数据类型) 数字: 整数:byte(1 字节)-short(2 字节) -int(在内存中占 4 个字节)-long(8 个字节) 小数:float(4 个字节,单精度浮点型) - double(8 个字节,双精度浮点型) 字符:char(一个字符=2 个字节):只能表示一个字。 如:char c='中'; c 存的是‘中‘这个字的编码。 布尔:boolean(true,false),不能用 0 和非 0 表示。 String(字符串)复杂数据类型(类) String 类提供了数值不可改变的字符串 String s=new String(“abc”);创建了两个对象 1,在字符串池中创建一个对象(此对 象是不能重复的)2,new 出一个对象。Java 运行环境有一个字符串池,由 String 类维护。执行语句 String s="abc"时,首先查 看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给 s,如果不存在则先在字符串池中新建一个字符串"abc",然 后再将其赋给 s。执行语句 String s=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc" (注意:新建的字符串"abc"不是在字符串池中),然后将其付给 s。 2,初始化 (局部变量而言,必须初始化才能使用) 如:age=10; 3,通过变量的名字对变量进行操作,如:age=other; 赋值时,左=右 1)数据性质是否一样。 2)所占用的内存空间上考虑 (左>右)不用类型转换。(左<右)要类型强制转换, 如:int age=1; long l=10; age=(int)l; 符号位:0 代表正数,1 代表负数。 BigDecimal 比 double 更精确,一般用于处理高精度运算。 &和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) Java 中的标识符的要求: 1,只能是字母,数字,_,$。 2,数字不能作为标识符的开头。 3,大小写敏感。 5,标识符不能是关键字。 4,没有长度限制。如:ArrayOutOfBoudleException 一般来说,类的名字以大写字母开头。 方法和变量的名字以小写字母开头。 标识符的名字应当具有含义,如 age , name 表达式:1,由运算符和变量组成。2,都会有返回值。 复合表达式:"a/b="+(a/b); 简单表达式:a/b; 作业,打印润年, 1,能被 4 整除,但不能被 100 整除 2,能被 400 整除。 自增(++),自减(--)运算符。 前++:++a;先对 a+1,再返回 a+1 之后的值。 后++:a++;先返回 a 的值,然后对 a 进行+1。 前++,后++共同的特点:a 本身的值都会+1; 区别在于表达式的返回值是不一样;用返回值来参与计算。 ? : ?前面的布尔表达式如果为真就执行 A,否则执行 B。 -->(boolean express)? A : B;如:char ch=(5>2)?'Y':'N'; (‘:‘左右两侧的返回类型要一致,且与 ch 的返回类型也一样) java 打包(压缩包 .zip .rar .tar .gz .jar)。 root/ yesq/ 5
|-com/ |-work/ |-core/ |-VarTest.class |-RunNian.class . . . . . . 压缩命令: jar -cvf abc.jar 解压命令:jar -xvf abc.jar dir abc.jar 为生成压缩包的名字 dir 为被打包的文件目录下的东西 c:是做压缩。v:为压缩过程的信息。f:指定压缩文件的名字。x:是做解压 打包一般从顶层包开始打。如:[java@localhost yesq]$ jar -cvf first.jar com //当前目录(yesq)下的 com 文件夹开始打 1,获得别人提供的 jar 文件 2,将 jar 文件的名字以及他的绝对路径配置到 CLASSPATH 中 3,使用 import 语句,将其他包的内容导入到本文件中,如:引入包 com.kettas.common 包中的 SystemIn 类 import com.kettas.common.SystemIn; ------ java 中的流程控制 ----- 1,顺序 2,条件(代码是否执行,依赖于一个特定的条件) if(boolean express){ continue :用在循环里,用于结束本次循环。接着开始下一 次循环 4,分支 switch(var){ XXXXXX; XXXXXX; }else{ XXXXXX; XXXXXX; //如果布尔表达式为真就执行 XXXXXX。 //如果布尔表达式为假就执行 XXXXXX。 } 3,循环(相同的代码,被重复的执行多次) case 1 : XXXXXX; break; case 2 : xxxxxx; break; ........ default : xxxxxxx; 以不用 break; a,初始化循环条件。b,确定循环条件。c,确定循环 } // default 后面可 变量在循环体中的变化。 (1) while(boolean express){ a; 函数(方法):是由一些相关代码组成的集合,目的是为了解 决一个特定的问题,或者实现某个特定的功能。 函数(方法)一定有一个自己的名字,通过函数的名字执行 函数中的代码。 XXXXXXXXX; //如果布尔表达式为真就执行 2,在 java 中如何定义函数: a, 声 明 : public static void printMenu(int a,double b){.....} b,编写函数体: 如: public static void printMenu(int a,double b){ XXXXXXXXXXX; XXXXXXXXXX; } 函数(方法)里面不允许再有其它的函数(方法),函 数(方法)的位置必须是并列的。 3,调用函数: 通过函数名,如 pirntMenu(a,b); public static void main(String argv[]){ XXXXXXXXXXXX; printMenu(a,b); XXXXXXXX; } 调用者-原数据->函数 return 作用:1,结束本方法。2,返回结果。 一个函数返回的值只能有一个。 XXXXXX XXXXXXXXX; c; } (2) for(a;b;c){ } (3) do{ XXXXXXXXXX; XXXXXXXXXX; }while(boolean express); //循环体至少执行一次; while(XXX){ XXXXXX; XXXXXX; bread; XXXXXX; //或者 continue; } break :用在循环或分支里,用于退出整个循环或分支 4,值传递。传递的是实参的值, 被调函数使用的数都是实参的拷贝。 是否改变实参,要看被调函数的设计。 数组:一维数组-->:三种声明方式 一,(1)首先要声明。如:int[] array;或 int array[]; (2)申请内存空间如:array=new int[2]; array 代表数组 array[]的首地址(引用:引用就是 C++里的指针。);当参数传递时,只要用数组的首地址就可以。 1,数组中的元素类型要一致。 2,数组长度不能缺省,不能改变,但可以删了重建。 3,内存空间连续,有索引下标值(从 0 开始,最大 length-1) 优缺点:查询快,增删慢(链表,查询慢,增删快) 6
只要有 new 在,就要为变量分配内存。 array.length array 存的是 array 数组首变量的地址。 二,数组的显示初始化:int[] array={1,2,3,4,5,6}; 三,int[] array=new int[]{1,2,3,4,5,6,7}; //表示数组 array 的长度。 数组的拷贝: public static int[] expand(int[] a){ int[] b=new int[a.length*2]; /* for(int i=0;i
class Student{ //用类声明的数据(str)为引用类型,如:Student str; //实例变量:定义在方法之外,类以内的,没有 static 修饰的变量 //实例变量会有一个默认的初始值。初始值与变量定义时的类型有关。 //实例变量(成员变量)--->属性。可通过新建对象的引用来访问类的实例变量。如,stu.name; String name; int age; String sex; } 实例变量和局部变量的区别: 1,位置:局部变量定义在方法里面。实例变量定义在类以内方法之外。 2,使用的范围:局部变量只能在定义他的方法里面使用,直接调用变量名就可以了。 实例变量至少可以在定义他的整个类内使用,使用时必须用对象去调用。只有跟对象一起实例变量才有意义。 3,局部变量使用之前必须初始化。实例变量不需要赋初值,系统会给默认的初值。 4,局部变量在同一方法里不能重名。局部变量和实例变量可以重名,在方法里采用就近原则。 ==方法:====================== 包括: 方法: 做什么:方法的定义 修饰符 返回类型 方法名(参数列表) 异常 怎么做:方法的实现 {******} 修饰符(如:public) 返回类型(如:int) 方法名/函数名 (参数表--形参) 如: public void eat(String fish){ //eat(),吃的功能。 //怎么做. } 使用实例方法时也需要用对象去调用。如:stu.eat("fish"); 方法重载(overloading):编译时多态。 在一个类的内部,方法名相同形参数不同的方法,对返回类型不要求,这种现象称之为重载; 编译器会自动选择使用的方法。体现了一个编译时多态。 好处:对使用者屏蔽因为参数不同造成方法间的差异。 找方法时如果没有合适的,采取自动向上扩展原则。 调用时形参之间的区别一定要明确。 1. 形参的个数不同 2. 形参的类型不同 3. 形参的顺序不同 4. 形参的名字相同 方法覆盖(override):运行时多态。 1,发生在父类和子类之间 2,方法名相同,参数相同,返回类型相同 3,子类方法的访问权限不能更严格,只能等于或更加宽松。 构造方法: 1,没有返回类型,方法名必须和类同名。 2,构造方法不能手动调用,它只用在创建对象在时候,只出现在 new 之后。 只要构造方法被调用运行,就一定有对象产生。 3,在一个对象的生命周期里,构造方法只能被调用一次。 4,类写好后一定有构造方法, 如果程序没有显示的提供构造方法,JVM 会提供一个默认的构造方法,public classname(){} 如果程序显示提供,系统不再提供默认的 5,同一个类的多个构造方法一定重载。 6,创建对象的同时构造方法的代码块里还可以写需要运行的代码,还可以给属性(实例变量)赋值, 引用类型的属性赋值就是用 new 创建对象,然后调用构造方法。如:Student stu=new Student(); 用 new 创建对象时 JVM 做的三件事: 如:Student stu=new Student(); 1,申请空间;(把值放到空间里,再把空间的地址给引用变量。)----创建父类对象 2,初始化实例变量;没显示声明值的话就用默认值。 3,执行构造方法, 因为实例变量在创建对象的过程中被初始化,所以使用实例变量前必须创建对象(要用对象去调用),否则实例变量根本不存在 =====关键字:this======= 1,在普通方法里,指代当前对象引用(哪个对象调用该方法,this 就指向该对象) 2,this 不能出现在静态方法里。 3,在构造方法里,this 用来指代本类的其他构造方法。在本类构造方法之间互相调用。如:this(形参); 使用时放在构造方法里的第一行。 4,不能写成死循环(不能递归调用) 8
分享到:
收藏