数据类型
得到字符在ASCII码中取值 (int)‘a’ 相反:P24
int c=20;char s=(char)c; //数据类型转化
若int越界,可在该值后加L变数据类型
输出时可以以0X23强制转换十六进制
最小值代码
byte.MIN.VALUE;
转义字符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJdFyVNJ-1577074642039)(F:\TyporaWorkplace\文件\图片\IMG_20190115_102213.JPG)]
优先级
byte-short-char-int-long-float-double P29
类型转化
Int myFloat=Int.parseInt(String s);
String=""+a;
输入
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));//第一种
Float num=Float.parseFloat(buf.readLine());
Scanner reader=new Scanner(System.in);//第二种
Int num=reader.nextInt();
- reader.nextLine();
- reader.nextFloat();
- reader.next();(String型)
优先级
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5Gz0cT7-1577074642040)(F:\TyporaWorkplace\文件\图片\转义字符.JPG)]
数组
P65字符串数组P76方法数组1 P92
int[] a=new a[5];//对应的有默认值为null
int[] a={1,2,3};//定义a之后直接赋值
a.length();
int[][] a=new int[21][];//必须定义高层维数
JButton[] manageButton= {new JButton("用户管理"),new JButton("课程管理")};
JButton[] manageButton=new JButton[] {img,img};
foreach
for(int aa:a) System.out.println(aa);//输出数组a中的每个元素
@Override
帮助自己检查是否正确的复写了父类中已有的方法
告诉读代码的人,这是一个复写的方法
概念
public
同一类 | 同一个包 | 外边的子类 | 所有类 | |
---|---|---|---|---|
Private | 是 | |||
Default(默认) | 是 | 是 | ||
Protected | 是 | 是 | 是 | |
public | 是 | 是 | 是 | 是 |
方法重载
指方法参数个数、类型、顺序不同,返回值不同无法重载
私有构造方法
方法名与类名相同
不需要返回值
主要作用是对类的对象的初始化
不能直接调用,需要用new调用
当每用该类创建一个对象时,系统会自动调用该类的构造方法进行初始化
静态static与实例变量区别P107
可以用类名、对象名直接调用方法
不能使用this和super
不能对实例变量进行调用
被所有对象共用,累加
前者可以用类名直接调用
静态初始化器与构造方法:P110
构造方法是对新建的对象进行初始化,器是对类自身进行初始化
构造方法是new一个新对象时自动调用,new多少对象执行多少次;器是该类被加载入内存时只进行一次。
器不是方法,因此没有参数、返回值、和参数;构造方法的返回值是它的本身,不能使用void
不能用This与super:
This在普通方法,调用方法对象;在构造方法中,初始化对象;还可以调用其他构造方法
Java程序在执行子类构造方法之前会先调用父类无参的构造方 法
覆盖
出构造方法以外若父类与子类的方法格式完全相同,调用父类时,子类会对父类的方法覆盖(除final和private)
赋值问题‘=’
当参数是基本数值类型时,传值方式调用;当参数是引用变量时,则是穿址调用
抽象类
抽象类不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类
抽象类不能创建对象,只能有构造方法,只能继承(使用覆盖的方法),所以抽象类的方法一般没意义
protected String name;
public Shape(String xm){}
abstract public double getLength();
接口
public static final int i=0;
public abstract void use();//以上系统默认为此类型
JFrame
默认窗格布局:borderLayoutout(JApplet、JDialog默认)默认为center
窗口设置
setVisible(true);//窗口显示
setLocationRelativeTo(null);//窗口以~居中,内部是null,则以电脑居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//当点击右上角X,系统停止运转
Image
用来绘制图片,ImageIcon用来添加到各类组件中,直接显示要转化为Image。PS:ImageIcon通常使用来设置组件上的图标
Image iconImage=(new ImageIcon(filename))).getImage();
paint()方法
组件首次显示或从隐藏变为显示时
从缩小图标变为正常显示后
改变窗口大小时。
JPanel
默认窗格布局:flowLayout
双缓冲:换图片时,extends JPanel可代替双缓冲。或直接使用双缓冲双缓冲代码:
private Image offScreenImage=null;
public void update(Graphics g){
if(offScreenImage==null){
offScreenImage=this.createImage(Constant.Game_WIDTH,Constant.Game_HEIGHT);
}
Graphics gOff=OffScreenImage.getGraphics();
paint(gOff);
g.drawImage(offScreenImage,0,0,null);
}
setOpaque(true);//设置其,改变默认显示为有,可以看到设置的背景颜色
驼峰命名法
package:<域名反转>.<团队名>.<项目名>
**Class/Object、Interface:**HandsomeProvider、<接口名>+“Impl”
Method/Function动词或动词+名词、
设置/获取某个值的方法,命名为setV/getV
返回长度的方法,命名为length
判断布尔值的方法,命名为isV
将对象转换为某个特定类型的方法应该命名为toT
量openId、MAX_SUITABLE_SIZE
异常
空指针:new出的对象是否存在;
监听使用窗口、内部类、匿名内部类、方法监听
内部类继承外部类的变量:将变量定义为static
MVC
view层:视图层,项目中的界面;
controller层:控制层,获取界面上的数据;将要实现的功能交给业务层处理;
service层作用: 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理
dao层作用: 数据访问层, 用来操作数据库表的数据
db数据库: 这里指MySQL
domain 实体包: 存放JavaBean
tools工具包:存放项目中使用到的工具类
test测试包: 存放项目功能测试的代码
获取焦点
1.userSaveButton.setFont(new Font("宋体", Font.BOLD,FOTN_SIZE));
2.userAddButton.setFocusable(true);
3.public void paint(Graphics g) {userAddButton.repaint();}//使用重画当对象被共享建议使用静态对象
异常:
No operations allowed after connection closed.
分析:这样的问题原因只有一个,你这里和数据库的连接Connection是一个Static的,程序共享这一个Connection。所以第一 次对数据库操作没问题,当把Connection关闭后,第二次还想操作数据库时Connection肯定不存在了。(每次开启tomcat后第一次能成功,刷新之后第二次就报了错)实验了下,当我把con.close()注释了之后,就没报这个错误了。
解决方法:把静态块中的内容移动到获取数据库连接的方法里https://www.cnblogs.com/syp172654682/p/8379837.html
**异常总结:**程序无法处理的错误:error;程序自己可以避免而不去捕获的异常:Exception的RuntimeException;程序必须捕获的:Exception的其他
捕获异常:
try{
}catch(Exception e){
e.printstacktrace(); //输出当期那异常对象的堆栈使用轨迹
}
finally{ }//此语句无论try是否捕获到异常,都一定会执行.(当catch中为sysystem。exit(0);时不执行,return时执行)
抛出异常
throw new Exception();//放在方法体中
public void useIt() throws Exception{}//放在方法头
判断String为空
1、str == null;(字符输出为空时)package sanyue.wuzu.checking.view.CheckPanel;
2、"".equals(str);
3、str.length <= 0;
4、str.isEmpty();
是否为空,与是否无值(表格添加行时出现错误)
null==userTable.getValueAt(i, j)从未赋值
userTable.getValueAt(i, j).equals("")曾经付过值,但现在没值
导包基础
不需要导包:
- java.lang包下的内容(基础类型)
- 同一个报下的内容
System
System.currentTimeMillis();//获取当前时间与1970年差值
Map
Map<k,v>——双列集合key与value一一对应(键不可重复、value可重复 )
HashSet new Map()
HashMap子类
底层是哈希表=数组+链表+红黑树(当链表长度超过8)
无序集合:存储元素和取出元素的顺序不同
Map<String,String> map=new HashMap<>();
//Map的一些简单方法
put(K key,V vaule);//若key相同,value替代原有值
get(Object key);//返回key所对应的value
remove(Object key);
boolean containskey(Object key);//判断是否含有该值
//遍历map,获取Map集合中所有键key,存在set中
set<K> keyset();
Iterator<String> it=set.iterator();
while(it.hasNext()){
String key=it.next();
Interger value=map.get(key);//输出即可
}
//获取到Map集合中所有的键值对对象的集合
Map<String,Integer> map=new HashMap<>();
map.put("zhao",123);
map.put("chao",123);
Set<Map.Entry<String,Integer>> set=map.entrySet();
Iterator<Map.Entry<String,Integer>> it=set.iterator();//使用迭代器遍历set集合
while(it.hasNext()){
Map.Entry<String,Integer> entry=it.next();
String key = entry.getKey();//使用Entry对象的get与set获取键与值
Integer value = entry.getValue();
System.out.println(key+" "+value);
}
linkedHashMap
集合底层是=哈希表+链表
方法:
V put(K key, V value)//添加一个值
void putAll(Map m)//添加一个集合
clear()//清除所有
boolean containsKey(Object key)//查看是否包含Key键值
boolean containsValue(Object value)
Set<Map.Entry<K,V>> entrySet()//返回map到一个Set集合中,以map集合中的Key=Value的形式返回到set中
boolean equals(Object o)//判断两个Set集合的元素是否相同
V get(Object key)//根据map集合中元素的Key来获取相应元素的Value
boolean isEmpty()//检出map集合中是否有元素
Set<K> keySet()//返回map集合中所有Key
V remove(Object key)//删除Key为key值的元素
int size()//返回map集合中元素个数
Collection<V> values()//返回map集合中所有的Value到一个Collection集合
来源:CSDN
作者:whywhyhh
链接:https://blog.csdn.net/weixin_45320238/article/details/103663278