java

拈花ヽ惹草 提交于 2019-12-23 16:51:16

数据类型

得到字符在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集合

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!