??xml version="1.0" encoding="utf-8" standalone="yes"?>
U类Q?U基本类型(原生cdQ:整型Qbyte 字节?nbsp; 1Byte=8bit 256中状?nbsp; -128~+127
short 短整?nbsp; 2Byte=16bit 64436 -32768~32767
int 整型 4Btye=32bit 2^32 -2147483648~+2147483647
2^31=2^10*2^10*2^10*2
大约在正?1亿之间的?nbsp; k k k 2 =2G
long 长整?nbsp; 8Byte=64bit -2^63~2^63-1
char 字符?nbsp; 2Byte=16bit 0~65535
1+2+'a'+1+2{h?+2+97+1+2
点?实型Qfloat 单精?nbsp; 4Byte=32bit 实际?+1Q?个位权)f1=5.0F或f
double 双精?nbsp; 8Byte=64bit 实际?+2Q?个位权)
布尔cdQ?nbsp; boolean
注意QQ点型数据旉_ֺ存储Q整型数据ؓ_存储。而数据类型的字面值有默认|整型为intQ实型:为double
double和BigDecimal的区别:doubleQ适合做科学运?br /> BigDecimalQ适合用商业运?br /> BigDecimal b1 = new BigDecimalQ?5.0"Q;
BigDecimal b2 = new BigDecimalQ?3.1"Q;
b1.subtract(b2); ?nbsp;
b1.divideQb2,4Q? ?br />
BigInteger 是用于大数据的。。比如求9?9此方
5U引用类型(对象cdQ:c?nbsp; 接口 数组 枚D 标注
I类型:voidcd
数据cd的{换:只有boolean不参与数据类型的转换
Q?Q?自动cd的{换:a.常数在表数范围内是能够自动类型{换的
b.数据范围的能够自动数据cd大的转换Q注意特例)
int到floatQlong到floatQlong到double 是不会自动{换的Q不然将会丢q?br /> c.引用cd能够自动转换为父cȝ
d.基本cd和它们包装类型是能够互相转换?br /> Q?Q?强制cd转换Q用圆括hh目标cdQ置于变量前
8中基本类型的包装c:Byte Short Integer Long Character Float Double Boolean
基本cd的优势:数据存储相对单,q算效率比较?br /> 包装cȝ优势Q有的容易,比如集合的元素必L对象cdQ满了java一切皆是对象的思想
引用cdQ底层结构和基本cd差别较大
首先介绍下JVM的内存空_Q?Q? Heap 堆空_分配对象 new StudentQ)
Q?Q? Stack 栈空_临时变量 Student stu
Q?Q?Code 代码?Q类的定义,静态资?Student.class
egQStudent stu = new StudentQ)Q?br /> stu.study();
//new 在内存的堆空间创建对?br /> //把对象的地址赋给stu引用变量
上例实现步骤Qa.JVM加蝲Student.class 到Code?br /> b.new Student()在堆I间分配I间q创Z个Student实例
c.此实例的地址赋值给引用stuQ?栈空?br />
以上我在数据类型中所认ؓ比较重要的内容,希望能给一些h带来帮助Q若有hq有更多重要的知识,h出,大家一起分享、学习哦Q谢?/span>
]]>
1.JDKQ?java开发工具包 安装JDK src.zip是javacd源代?br /> jdk下binQ二q制文g binary
jdk下libQ运行的库文?nbsp; libary
2.JREQ?Javaq行环境 lib/rt.jar 是java的核心类?br />3.JVMQjava虚拟?br />4.GCQ?Java内存垃圾攉机制Q也叫lazy懒惰的收集机?br /> 当JVM发现内存不是,才启动GCU程回收pȝ垃圾QGCU程是很消耗系l资源的
5.APIQ?应用~程接口 javaҎJavaDoc API文
6.IDEQ?集成开发环境,可以用于~辑、编译、调式、运行、部|Ӏ打包、集成其他组Ӟ数据库编E、服务器lg、浏览器Q?br />
二、JDK、JRE、JVM的关p:Q包含关p)
1.可以安装JDK。就什么都有了Q能够提供Java开发功?br />2.可以只安装JREQ此时只能够q行JavaE序Q不能提供编译、调式等工具
3.JVM不能够单独安装,必须依附于JRE存在
三、Windows下的环境变量配置Q?br />1.Java 的安装目录,提供l第三方软g使用
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10
2.Java命o的搜索\径(从前往后依ơ找寻,扑ֈ为止Q?br /> PATHQpathQ?%JAVA_HOME%\bin;%PATH%;
3.Java cd搜烦路径
在JDK5.0以前Qclasspath=.;C:\Program Files\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar;
在JDK5.0以后Qclasspath=.
4.最后用javac ?nbsp; java -version验证
四、Unix/Linux下的环境变量配置Q?br />1.首先q入bash shell
2.在主目录下修?.bash_profile文gQ若权限不够Q请用chmod命o更改权限
JAVA_HOME=/opt/jdk1.6.0_10
必须是大写:PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:
export JAVA_HOME PATH CLASSPATH
3.最后保存退出, q用source .bash_profile 让环境变量生?br /> 用echo或set命o验证环境变量是否配置完成
用javac ?java -version验证
q是我在两种不同pȝ下配|的java环境变量Q希望能l一些想学习的h带来帮助Q?/font>
]]>
q是我对java特点的一些理解及其归UI
(1)、java 的简单性:和C++相比Q语法简单了Q取消了指针的语法;内存分配和回收不需要我们来q渡xQC++可以多承,但java只能是单l承Q相对于cL说。(注:接口可以多承)
Q?Q、java面向对象Qjava是U面向对象,但jquery是更U的面向对象?br /> 在java~程思想q本书说q,“Everything is object!” q样便于人类的构思和设计Q更W合Z的思考问题方?br />Q?Q、分布式Q主要还是用在EJB?br />Q?Q、安全性:java的语法限定了源程序的安全性,首先~译器会q行源代码的W一步检?br />Q?Q、跨q_Qjava能够跨越不同的操作系l^収ͼq_无关?br /> 怎么跨^台呢Q?nbsp; 主要是在不同的操作系l中QJVM规范都是一LQ被JVM加蝲成各个操作系l所支持的,屏蔽了底层操作系l的差异
Q?Q、高性能Q开闭原?--Ҏ展开放,对修改关?nbsp; java是即时编译的
Q?Q、多U程Q?br />
Java开发的程Q?br />Q?Q、首先编?.java源程?br />Q?Q、编译成 .class字节码文件byte codeQ一U二q制文gQ?br />Q?Q、最后被java虚拟机(JVMQ加载解释ƈ执行
虽然q些是很基础的知识,但这些是我对java重新的认识,可能q是有很多地方不CQ但我更x底层的知识打牢?br />请大家一h我分享,若有好的Q请提出Q我xq一步的学习Q?br />
]]>
q是我在学完Unix后归U的一些觉得有用的命oQ?br />ps:查看q程Q也可以观察当前shell
ps -ef:查看和终端有关的所有进E?br />df -k:查看当前文gpȝ使用情况
passwdQ修改系l口?br />passwd-d user:清除用户的口?br />more Q查看文件内?nbsp; 可以分屏昄
cat Q也是查看文件内?但不可以分屏昄Q?.适合文件的查看Q?.可以多个小文g~程大文?br />pwd Q打印当前工作目?br />id(root) 查看用户的n?br />cd Q改变当前目?br />ls -a
-R
-t
-l 按不同方式顺序查看目录下的文?br />ls -ld Q查看当前目录权?br />chmod Q?修改权限 创徏目录的默认权限ؓ755Q?创徏文本的默认权限ؓ744
touch Q新建文本,若存在则更改最新时_但内容不?br />mkdir Q创建目录,但不能创建多层目?br />mkdir -p Q可以同时创建目?br />cp -iQ?拯 文g 复制时文件若存在Q则提示是否覆盖
cp -rQ?拯 目录 如果目录存在Q在目标目录下创建源目录Q如果目标目录不存在Q新建目标目录,同拯
mv Q移?Q本质就是更改全路径?br /> 若目标不存在Q新建目录,同UdQ若存在Q移动到目标目录?br />rmdir empty-dir Q只能删除空目录
rm -r dir Q可以删除非I目?br />rm -ir dir Q提C是否进入目录,是否删除文g
rm -f passwd Q关掉交互,针对只读文g
注:删除资源Ӟ需要写权限
ln Q创建链接文?br />ln file file.ln :链?nbsp; “改一处,处处?#8221;
ln -s file file.sln :软链?nbsp; 好比Windows中的快捷方式
\ :一个命令可以用\换行
> : 输出重定向,会覆盖原有文件内?br />>> : 输出q加重定?br />| 道 Q将上一个命令的输出作文下一个命令的输入
| grep Q用于结果的qo
find /-name p :?目录开始找Q找出p文gQ会_匚w
find ~-perm 777 > ~/holes Q找出权限是777?br />find /export/home -type f -atime +365 -exec rm {} \;
表示普通文本类?nbsp; 讉K旉 ?nbsp; 执行 参数
ls file* | xargs grep dd Q依ơ传lƈqoQ找出含有dd内容的文?br />wc -l l计 ?br /> -w ?br /> -c 字符
du -sk . Q查看当前目录的大小Q单位ؓkQ若不写kQ则单位?.5k
kill q程?
pkill q程?nbsp; Q杀死进E?br />kill -9 :强制杀死进E?br />jobs Q显C当前进EQ?br />/sbin/ifconfig - a :查看ip
ftp 文g传输协议 bye 断开
get/mget 下蝲/扚w下蝲
put/mput 上传/扚w上传
Unix中环境变量配|方式和shell有关
csh Q设|变?nbsp; set var1 abc 不会转入子进E?br /> setenv var2 aaa 会{入子q程
bsah Q?讄变量 var1=abc 不会转入子进E?br />echo $var1 :查看变量?br />
查看pȝ配置的环境变量:Unix?nbsp; 用env
Windows?nbsp; 用set
~辑pȝ初始化文?nbsp; vi .bash_profile
注意Q?nbsp; l束后用source .bash_profile 是配|文件生?br />
计划dQ?br />crontab -e ~辑计划d
crontab -l 列出当前计划d?开始生?br />crontab -r 撤销命o
?/span>上这些内容,是我在学习Unix时掌握的Qƈ觉得对以后帮助有用的。若前辈有什么更好的见解Q我您指教,我会努力学习的!Q?/span>
]]>
class MyThread extends Thread{
//U程延迟旉
private int time;
//U程的名字由Thread累自行管?br />
public MyThread(String name,int time){
//调用ThreadcM的构造方法,讄U程的名?br />
super(name);
this.time=time;
}
public void run(){
for(int i=0;i<10;i++){
try {
Thread.sleep(this.time);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.printMsg();
}
}
public void printMsg(){
System.out.println (Thread.currentThread().getName()+"-->***正在q行***"+this.time+"U?);
}
}
public class Demo {
public static void main(String[] args){
MyThread mt = new MyThread("AA",100);
MyThread mt1 = new MyThread("BB",200);
MyThread mt2 = new MyThread("CC",300);
mt.start();
mt1.start();
mt2.start();
}
}
class MyThread1 implements Runnable{
private String name;
private int time;
public MyThread1(String name,int time){
this.name= name;
this.time=time;
}
public void run(){
for(int i=0;i<10;i++){
try {
Thread.sleep(this.time);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.printMsg();
}
}
public void printMsg(){
System.out.println (this.name+"-->***正在q行***"+this.time+"U?);
}
}
public class DemoF {
public static void main(String[] args){
MyThread mt = new MyThread("AA",100);
MyThread mt1 = new MyThread("BB",200);
MyThread mt2 = new MyThread("CC",300);
mt.start();
mt1.start();
mt2.start();
}
}
q行l果Q类同于上一U方法的l果Q只是出的顺序不相同
2)、arraylist和linkedlist
4)、hashtable与hashmap
1)?在主E序中就调用一个MenuҎ;
public class Main {
public static void main(String[] args){
new Menu();
}
}
2Q、在vo包里包装一个Personc,q实现Serializable接口Q?nbsp;且定义四个属性:姓名Q学Pq龄Q成l;
3Q、在op包里建立两个c,分别?nbsp;FileOperate?span style="color: #ff0000">InputDataQ?/span>前者主要实C文g的读、写即保存和输出Q后者主要构Z两个ҎQ一个是字符串的输入 Q另一个是整数的输入,q判断输入的是否为真?nbsp;
public class FileOperate {
public static final String FILENAME="d:\\person.ser";
//把对象保存在文g之中
public void save(Object obj){
ObjectOutputStream out = null;
try{
out = new ObjectOutputStream(new FileOutputStream(new File(FILENAME)));
//写入对象
out.writeObject(obj);
}catch(Exception e){
try{
throw e;
}catch(Exception e1){}
}
finally{
try{
out.close();
}catch(Exception e){}
}
}
//把对象从文g中读出来
public Object read() throws Exception{
Object obj = null;
ObjectInputStream input = null;
try{
input = new ObjectInputStream(new FileInputStream(new File(FILENAME)));
obj = input.readObject();
}catch(Exception e){
throw e;
}
finally{
try{
input.close();
}catch(Exception e){}
}
return obj;
}
}
public class InputData {
private BufferedReader buf = null;
//字节的输入量变ؓ字符,之后攑օ~冲之中
public InputData(){
buf = new BufferedReader(new InputStreamReader(System.in));
};
public String getString(){
String str = null;
try{
str=buf.readLine();
}catch(IOException e){}
return str;
}
public int getInt(){
int temp=0;
//如果输入的不是数字,臛_应该有一个提C,告诉用户输入错了
//可以使用正则验证
String str = null;
boolean flag = true;
while(flag){
//输入数据
str = this.getString();
if(!(str.matches("\\d+"))){
//如果输入的不是一个数字,则必重新输?br />
System.out.print("输入的内容必L整数Q请你重新输入:");
}
else{
//输入的是一个正的数字Q则可以q行转换
temp=Integer.parseInt(str);
//表示退出@?br />
flag = false;
}
}
return temp;
}
}
4)、在Menuc里建立控制台的初始信息Q?/strong>
public class Menu {
InputData input = null ;
public Menu(){
this.input=new InputData();
//循环出现菜单
while(true){
this.show();
}
}
//需要定义的菜单内容
public void show(){
System.out.println("\t\t 1、增加h员信?);
System.out.println("\t\t 2、浏览h员信?); ;
System.out.println("\t\t 3、修改h员信?);
System.out.println("\t\t 4、退出系l?);
System.out.print("\n请选择要用的操作Q?);
int temp = input.getInt();
switch(temp){
case 1:{
new PersonOperate().add();
break;
}
case 2:{
new PersonOperate().show();
break;
}
case 3:{
new PersonOperate().update();
break;
}
case 4:{
System.out.println("选择的是退出系l?);
System.out.println("pȝ退?);
System.exit(1);
}
default: {
System.out.println("你输入的内容不正?);
break;
}
}
}
}
5)、在PersonOperatecMq行数据的具体操作,完成最l结果的昄?span style="color: #ff0000">核心
import com.dr.util.FileOperate;
import com.dr.util.InputData;
import com.dr.vo.Person;
public class PersonOperate {
private InputData input =null;
public PersonOperate(){
this.input=new InputData();
}
//完成具体的Person对象操作
public void add(){
//要用输入数据的c?br />
String name = null;
String id = null;
int age = 0;
int score = 0;
System.out.print("输入姓名为:");
name = this.input.getString();
System.out.print("输入学号为:");
id = this.input.getString();
System.out.print("输入q龄为:");
age = this.input.getInt();
System.out.print("输入成W为:");
score = this.input.getInt();
//生成Person对象Q把对象保存在文件中
Person p = new Person(name,id,age,score);
try{
new FileOperate().save(p); //io操作?br />
System.out.println("数据保存成功Q?);
}catch(Exception e){
System.out.println("数据保存p|Q?);
}
}
public void show(){
//从文件中把内容读q来
Person p = null;
try{
p = (Person) new FileOperate().read();
}catch(Exception e){
System.out.println("内容昄p|Q请定数据是否存在Q?);
}
if(p!=null){
System.out.println(p);
}
}
public void update(){
//先将之前的信息查出来
Person p = null;
try{
p = (Person) new FileOperate().read();
}catch(Exception e){
System.out.println("内容昄p|Q请定数据是否存在Q?);
}
if(p!=null){
String name = null;
String id= null;
int age = 0;
int score=0;
System.out.print("误入新的姓名(原姓名ؓQ?+p.getName()+"Q?);
name = this.input.getString();
System.out.print("误入新的学P原学号ؓQ?+p.getId()+"Q?);
id = this.input.getString();
System.out.print("误入新的年龄(原年龄ؓQ?+p.getAge()+"Q?);
age = this.input.getInt();
System.out.print("误入新的成l(原成lؓQ?+p.getScore()+"Q?);
score = this.input.getInt();
//信息重新讄
p.setName(name);
p.setId(id);
p.setAge(age);
p.setScore(score);
try{
new FileOperate().save(p);
System.out.println("数据更新成功Q?);
}catch(Exception e){
System.out.println("数据更新p|Q?);
}
}
}
}
6Q、程序最后的q行l果及方式:
最后希望大家给予点评,我好做修改!谢谢Q?br style="font-family: " />
package com.dr.patient;
public class Patient {
private int num;
private int frontNum;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getFrontNum() {
return frontNum;
}
public void setFrontNum(int frontNum) {
this.frontNum = frontNum;
}
}
2Q、然后徏立一个病人服务的c(PatientServerQ,构徏一个病人等待排队数字的循环逻辑Q?br />
package com.dr.patient;
import java.util.LinkedList;
import java.util.Queue;
public class PatientServer {
Queue<Patient> patientList = new LinkedList<Patient>(); //新徏一个容器,病h的队?br />
public Queue<Patient> init(){ //构徏一个方法,把挂L病h加入
for(int i=1;i<=24;i++){ //讑֮队列中已?4个hQ挂号加入的从第25个开?br />
Patient pat = new Patient();
pat.setNum(i);
pat.setFrontNum(i-1);
patientList.offer(pat); //指定的病h元素插入此队?br />
}
return patientList;
}
}
3Q、病人挂L击页面,主要?/span>Display、ShellҎ新徏H口Q?/span>
package com.dr.patient;
public class PatientHuarry {
private int num; //两个急求病h的属?br />
private int frontNum;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getFrontNum() {
return frontNum;
}
public void setFrontNum(int frontNum) {
this.frontNum = frontNum;
}
}
public class PatientServerH {
Queue<PatientHuarry> patienthuarryList = new LinkedList<PatientHuarry>();
public Queue<PatientHuarry> init(){
for(int i=1;i<=16;i++){ //q对列能攄人数
PatientHuarry ph = new PatientHuarry();
ph.setNum(i);
ph.setFrontNum(i-1);
patienthuarryList.offer(ph);
}
return patienthuarryList;
}
}