排序:https://www.cnblogs.com/onepixel/articles/7674659.html
Windows中 换行 \r\n Linux中 换行 \n
- 编译环境 compiler 运行环境 install JREs 在window下的references里
- 快捷键:首选项 java editor templates
1.垃圾回收
当内存不在被引用时,如 person p = new person() p = null; finalize() 会回收对象
System.gc() 向虚拟机发出申请,但会不会回收不知道
2.this 相当于对象 this()调用构造方法时 要位于首行。
3.static修饰的变量成为静态变量,为所有的对象共享,可以直接通过类名来访问;static只能修饰成员变量,不能修饰方法中的局部变量;static修饰的方法称为静态方法,可以通过类名直接调用;静态方法只能访问类的静态方法(静态变量,静态方法)
4.普通代码块:在方法名后或方法体内用大括号{}括起来的一段代码
构造代码块:
静态代码块:static修饰的代码块,它是最早执行的代码块
5.内部类
6.类中有有参的构造方法时,默认的无参构造方法便不会被创造
7.子类中没有显式地调用父类的构造方法,那么将自动调用父类中不带参中的构造方法;如果子类构造方法中既没有显示调用基类构造方法,而基类又没有无参数的构造方法,则编译出错。子类中默认有final()
https://www.cnblogs.com/z-sm/p/7604227.html
8.final 修饰的类不能被继承
修饰的方法不能被子类重写
修饰的变量是常量,初始化后不能被修改。
- image.png
- 变量名 instanceof 类名
判断一个对象是不是一个类或接口的实例
11.多线程
1.线程的创建: 继承Thread 重写run方法 创建对象 对象.start
实现Runnable接口 重写run方法 创建对象 创建并开启线程对象
12.线程的生命周期
新建 就绪 (阻塞) 运行 死亡
13.线程的调度
1.优先级:setPriority() getPriority() 设置和读取优先级
MAX_PRIORITY NORM_PRIORITY MIN_PROIRITY
对象.setPriority(Thread.MAX_PRIORITY);
2.线程休眠 Thread.sleep(2000); 休眠两秒
3.线程让步 yield() 方法不会使线程阻塞。只是将线程转换为就绪状态,也就是正在执行的线程暂停一下,线程调度器重新调度一次,有可能还会将暂停的程序调度出来继续执行,这就是线程让步。 Thread.yield();
4.线程插队 join()
对象.join() 则该对象就会停止运行
5. 后台线程 setDaemon(boolean on) 若参数为true 则为后台线程
isDaemon() 判断一个线程是不是后台线程
14.线程同步
synchronized(obj){
}
用synchronized 修饰run 方法也可以提供线程同步
15.死锁
16.Integer 类的构造方法
public Integer (int value)
public Integer (String s)
两者都是创建一个Integer对象,它表示int值 这样一个Integer对象在数值上与int无疑
但它是对象
int i=10;
Integer in= new Integer ("10");
Integer at =new Integer(20);
String s = new String("20");
System.out.println(in+at); //30
System.out.println(in.valueOf(s)); //20
System.out.println(i+in); //20
System.out.println(in instanceof Integer); //true
System.out.println(in.toString() instanceof String); //true
自动装箱和拆箱机制:基本类型值与包装类的对象相互自动装换。
Integer in =10; //自动装箱成Integer
System.out.println(in);//10
int i = in; //自动拆箱为int
System.out.println(i);//10
Scanner类的用法
Scanner sc = new Scanner (System.in);//System.in一定要有
System.out.println("输入内容,当内容为exit时程序结束");
while(sc.hasNext()) //判断是否有下一个输入
{
String s = sc.next(); //nextInt nextLong 等
if(s.equals("exit")) //equals 与== 是不一样的
{
break;
}
System.out.println("输出的内容为"+s);
}
sc.close();//释放资源
}
17.filewriter的用法
image.png
18.IO异常处理
image.png
19.打包
-
新建一个文件夹做目录(编译地址在生成的java文本目录下进行)
javac -d 目录地址 文件名 会在目录地址生成一个与包名相同的文件夹
image.png -
新建一个文件 写配置清单
Main-Class:空格包名.类名
回车
image.png
3.编译 (编译在目录地址下进行)
jar -cvfm 名字.jar 清单名 生成的文件夹名(即包名)
20.IO流
1.字节流
接口 OutputStream InputStream
类(FIleOutputStream BufferOutputStream FileInputStream BufferInputStream)
InputStream 类的方法
void close()
int read() 从输入流中读取数据的下一个字节
int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中,返回读取的字节数
int read(byte[] b,int off,int len) 将输入流中最多len个数据字节读入byte数组
OutputStream 类的方法
void close()
void flush()
void write(byte[] b) 将b.length个字节从指定的byte数组写入此输入流
void write(int b) 将指定的字节写入此输入流
void write(byte[] b,int off,int len) 将指定byte数组中从偏移量off开始的len个字节写入此输入流
FileInputStream fis = new FileInputStream("read.txt");
int n=512;
byte buffer[] = new byte[n];
while(fis.read(buffer,0,n)!=-1) //
{
System.out.println(new String(buffer));
}
image.png
image.png image.png
image.png
image.png
image.png
image.png
image.png
重点掌握 FileInputStream FileOutputStream BufferInputStream BufferOutputStream
的用法
read() 慢 read(byre[] b) read(byte[] b,int off,int len) 快
BufferInputStream 的写法 是将 FileInputStream 对象传入 装饰设计模式
JSP
<% %> java程序片段 在service方法中
<%= %> 输出表达式 在service方法中的out.print();之中,所以不可加分号
<%! %> 声明成员 与service方法同级。如成员变量,方法等
<%= %> 与什么都不写的区别
<%= %> 是在out.print();函数中,可以使用变量 <% int x=1,y=2;%> 则<%= x+y%> 会在页面输出3
什么都不写意味在<body></body>标签内写x+y 会输出x+y
注释:
html 会出现在html代码和java代码中
java // /* */ /****/ 只会出现在java代码中
jsp <%-- --%> 不会出现在java代码和html代码中
java代码就是jsp被编译的java文件 html代码就是在显示页面上 右键-->查看页面源代码
22.commons-dbutils-1.6.jar作用
在最基层查询数据的时候,我们通常用的则是Statament,这个就是将sql语句直接发给sql数据库,当外界发生变化的时候,很容易影响结果,很容易受到占位符的影响。于是就产生了进化版本,使用Preprastament替代statemnet,这个则是预编译的意思。直接则是将sql语句缓存起来,加入其他的占位符,外界也没有办法影响到预编译的结果。
可以说,Preprastament是Statament升级后的产物。查询的结果使用ResultSet结果
至于今天说的这个架包commons-dbutils-1.6.jar,里面主要是一种查询方法,但是这个工具的优点就是可以将数据整理成各种结构。
QueryRunner queryRunner=new QueryRunner();//直接与数据库沟通交流的主要方法
,里面对PreparedStatement方法进行了包装,根据数据结果,选择对应的方法,可以将数据结果打包成各种不通的数据结构,是使用框架的时候必备的框架。
23.vector的用法
https://blog.csdn.net/weixin_41743247/article/details/90635931
24.java符号&、| 、~、^、&&、||、!
位逻辑运算符:
&:
位与运算符,只有两个操作数都是true,结果才是true。
| :
位或运算符,只有两个操作数都是false,结果才是false。
~:
位非运算符:如果位为0,结果是1,如果位为1,结果是0.
取反后为补码,然后在取回来 其实 ~n=-(n+1) 记住就行
^:
位异或运算:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。
int i=15 j=2 i^j=13
位同或运算:两个数转为二进制,然后从高位开始比较,如果相同则为1,不相同则为0。java中并没有同或运算符,可以通过异或转换得到。同或运算 = 异或运算 ^ 1
逻辑运算符:
&&:
逻辑与运算,也是只有两个操作数都是true,结果才是true。但是如果左边操作数为false,就不计算右边的表达式,直接得出false。类似于短路了右边。
||:
逻辑或运算,也是只有两个操作数都是false,结果才是false。但是如果左边操作数为true,就不计算右边的表达式,直接得出true。类似于短路了右边。
!:
逻辑非运算,对操作数取反。
25
image.png
网友评论