======================================================
注:本文源代码点此下载
======================================================
大家好!这是我学完java基础后自己总结的学习笔记,希望对大家有帮助。
java中的语法:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
常量:
java中的常量:程序中固定的,不变化的量
浮点型:就是小数
布尔型:true false
字符型:(数字符号)'a''1'(只能放一个)“”空字符串
字符串型:双引号表示,很多字符组成的串
空常量:表示对象的引用为空。
整数进制:(计算机存储数据的方式)
二进制:0-1
八进制:0-7开头(不太常用)三个二进制位,就代表一个八进制位
十六进制:0-9 a-f0x开头四个二进制位,就代表一个十六进制位
十进制:0-9
变量:
java中的变量。用于存储常量的内存空间
空间里的值可以变化
这个变量可以被重复使用
什么类型的数据往什么里面放。
数据类型:
八个二进制表示一个数据,一个字节!
1.基本数据类型
数值型
整数部分byte(一个八位) short(二个八位) int(四个八位) long(八个八位)整数默认都是int型
浮点类型float(四个八位) double(八个八位) 小数默认都是double型的
字符型 char
布尔型 boolean
2 引用数据类型(null常量是给引用数据类型使用的)
类 class
接口interface
数组 ([])
java当中,不同数据类型之间是不能直接进行运算的
强制类型转换
自动转换视频一30分钟左右。是重点
............................................................................................................
java中的运算符:
1.算术运算符:
模运算
连接符(+)
自增 自减
*任何数模与2不是0就是1,可以用做开关运算。
2.赋值运算符:
int a=4
a+=3 只有赋值运算等同a=a+3赋值运算和算术运算
例子:short s=3;第二视频15分钟左右
s=s+2//
s+=2; 能运算
3.比较运算符:(非常明显的特点,运算完的结果,要么是真,要么是假)。
相等于 ==
不等于!=
instanceof 检查是否是类的对象day7多态32分钟
用于判断对象是否所属于指定类或者接口
4.逻辑运算符:
5.位运算符 (十进制转换成二进制)
左移>最高位是什么,就那什么补
无符号右移 >>>直接拿0补
& | ^ 也是位运算符
二进制1就是true,0就是false。
........................................................................................................
程序流程语句:
1 判断语句
if..
if..else
三元运算符:运算完必须有结果
例:int x=3,y=0;
if(x>3)
y=100;//不写大括号是控制 当条语句
else
y=200;
y=(x>3)?100:200;三元运算符
system.out.println("y="+(x>3)?100:200);
if..else if..else if..else
2 选择语句
switch语句
跳出或者结束break语句。
四种类型byte short int char枚举
*if和switch都可以用于判断
但是if比较强大,除了判断值以外
还能判断范围。而且if某些方法返回的布尔型的值
switch只能对值进行选择
什么时候用,和区分!
当你有限的几个值进行判断,用switch较快。
switch能做,if基本都能够做。
3 循环语句
while 循环
do..while 循环无论条件是否满足,循环体都执行一次,只需要了解,用的极少。
for循环
while和for的区别:
书写时,用while写出来的,用for绝对没问题。
使用上,变量仅为循环增量而存在 就用for
如果定义一个变量被循环操作,还被下面语句所操作,就用while。
用到了内存消耗。
无限循环:
while(true){}
for( ; ; ){}
更加重要的内容:什么时候用到循环语句(这是起初思想)
程序自动去执行某些语句,让某些语句执行很多次的时候,
就使用循环结构。
写循环的注意事项:哪些需要参与循环,哪些不需要参与循环。
一定要先明确出来。
循环应用:
获取1-100的和:通过累加思想完成。
累加思想:
定义一个变量,不断记录每一次变化的结果
并用该结果和下一个数据进行运算
在运算时,因为数据较多,并有规律
所以使用循环会较为方便。
定义变量,并循环一走,就完事了。
int sum=0;
for(int x=1;x=5;x/=2)
{
day++;
}
system.out.println(day);
}
}
................................................................................................
用到时候,回头来复习。看看就能懂。
break continue
break:用于选择结构 或者循环结构。
continue: 用于循环结构
结束本次循环,开始下一次循环
.....................................................................
语句综合练习:
forfor循环。
99乘法表
for(int x=1;xclass
class class1=string.class
string s="abc";
class class2=s.getclass();
class class3=class.forname("java.lang.string");
以上就是获取字节码文件的三种方式
字节码对象。class
以前操作对象的时候用的是new关键字完成,并通过对象,成员方式进行调用
person p = new person();
1》先加载person.class文件
2》对对象进行初始化
p.method();
现在可以通过字节码对象完成以上动作。
加载person.class文件 获取 person.class文件对象的class对象
class class = class.forname("person");
通过字节码文件对象,对指定类进行对象创建 并初始化
person p = (person)class.newinstance();
通过对象调用成员
类可以作为参数传递,那么方法也可以作为参数进行传递
因为方法存在于字节码文件内,所以可以通过class对象获取字节码文件的内容
method m = class.getmethod("function",string.class);
m.invoke(p,"heihei");
类或者方法都可以作为参数传递这样对开发有什么好处呢?
需求:设计一个主板,为了提高后期的扩展性,也就是为了后期提高电脑的功能,
对外提供pci的接口。以方便电脑功能的扩展。
interface pci{
void open();
void close();
}
class mainboard{
public void usepci(pci p){
p.open();
p.close();
}
}
class mainboarddemo{
public static void main(string[] args){
mainboard mb = new mainboard();
mb.usepci(new netcard);
}
}
class netcard implements pci{
public void open(){
system.out,println();
public void close(){
system.out,println();
}
}
那么为了使用网卡,还需要一个步骤买就是在定义好的应用程序中,
建立网卡,并作为参数传入,那么就是对原有的程序进行修改,不利于程序的健壮性
可不可以在不修改原有程序的基础上,运行后期出现的这些子类对象呢?
这样后期的子类就不需要建立对象们只要将子类名称告知即可。
为了获取后期对象并在前期可以使用,就对外提供了一个配置文件,前期程序可以直接操作
该配置文件,后期的子类只要将子类名称存入配置文件即可,
这是就需要动态的获取指定类,并预先创建对象,就用到了反射机制,重新修改一下程序如下:
class mainboarddemo{
public static void main(string[] args){
mainboard mb= new mainboard();
file f = new file("lianxi.txt");
bufferedreader br = new bufferedreader(new filereader(d));
string s = br.readline();
class c = class.forname(s);
pci p = (pci)c.newinstence();
mb.usepci(p);
}
}
.............................................................................
解析dom节点
1》.读取xml文件节点内容:
package cn.yj3g;
/**
*
李四
51
张三
22
结果:
begin..
性别: 男
学生名: 李四年龄: 51
性别: 女
学生名: 张三年龄: 22
*/
import java.io.*;
import javax.xml.parsers.*; //导入此类,为sun所提供的xml解析器,包括dom解析器和sax解析器的实现
import org.w3c.dom.*; //此包中定义了w3c所制定的dom接口。
public class testdomread {
public static void main(string[] args) {
system.out.println("begin..");
documentbuilderfactory dbf = documentbuilderfactory.newinstance(); // 利和jaxp,建立一个解析器工厂
documentbuilder db = null;
try {
// 利用解析器工厂的newdocumentbuilder方法获得一个documentbuilder对象,此对象代表了具体的dom解析器
db = dbf.newdocumentbuilder();
} catch (parserconfigurationexception dbe) {
system.out.print(dbe);
}
document doc = null;
try {
try {
// 利用解析器对文档进行解析.关联xml文档.返回的document对象代表了对应在xml树模型
doc = db.parse("f:\\files\\workspace\\xml\\links.xml");
doc.normalize();//一个保存和加载的过程
} catch (org.xml.sax.saxexception ex) {
system.out.print(ex);
}
} catch (ioexception e) {
system.out.print(e);
}
try {
// 利用document的getelementsbytagname方法返回对应关键字所对应的树干列表
nodelist nl = doc.getelementsbytagname("学生");//按文档顺序返回包含在文档中且具有给定标记名称的所有 element 的 nodelist
for (int i = 0; i
李四
51
张三
22
张三男//添加的内容
*
*/
public class testdomwrite {
public static void main(string[] args) {
// 读入xml文件,建立document树
documentbuilderfactory factory = documentbuilderfactory.newinstance();
documentbuilder builder = null;
try {
builder = factory.newdocumentbuilder();
} catch (parserconfigurationexception bde) {
system.out.println(bde);
}
document doc = null;
try {
try {
doc = builder.parse("f:\\files\\workspace\\xml\\links.xml");
} catch (org.xml.sax.saxexception doe) {
system.out.println(doe);
}
} catch (ioexception e) {
system.out.println(e);
}
doc.normalize();
// 添加节点
string text = "张三";
string sex = "男";
text textseg;
text sexseg;
element link = doc.createelement("学生"); // 创建一个link对象,节点对象
// 添加“姓名“字段
element linktext = doc.createelement("姓名");
textseg = doc.createtextnode(text);// 创建给定指定字符串的 text 节点
linktext.appendchild(textseg);
link.appendchild(linktext);
// 添加“性别“字段
element linksex = doc.createelement("性别");
sexseg = doc.createtextnode(sex);
linksex.appendchild(sexseg);
link.appendchild(linksex);
doc.getdocumentelement().appendchild(link); // 把创建好的节点添加到dom树中
// 用xslt把dom树输出到流(文件)中
transformerfactory tfactory = transformerfactory.newinstance();// 获取 transformerfactory 的新实例。
transformer transformer = null;//transformer: 将 xml source 转换为 result
try {
transformer = tfactory.newtransformer();
} catch (transformerconfigurationexception te) {
system.out.println(te);
}
domsource source = new domsource(doc);
streamresult result = new streamresult(new file(
"f:\\files\\workspace\\xml\\links2.xml"));
try {
// transformer类的transfrom方法接受两个参数、一个数据源source和一个输出目标result
transformer.transform(source, result);
} catch (transformerexception tre) {
system.out.println(tre);
}
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
3》.
package cn.yj3g;
import java.io.file;
import java.io.ioexception;
import java.util.arraylist;
import java.util.list;
import javax.xml.parsers.parserconfigurationexception;
import javax.xml.parsers.saxparser;
import javax.xml.parsers.saxparserfactory;
import org.xml.sax.attributes;
import org.xml.sax.saxexception;
import org.xml.sax.helpers.defaulthandler;
//解析persons.xml生成一个person类对象的集合
/*
*
liming
好文要顶关注我收藏该文与我联系
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/