java基础笔记整理
来源:互联网 发布:mac升级后能退回吗 编辑:程序博客网 时间:2024/05/26 05:53
1,Java开发环境搭建
常用DOS命令
d: 访问D盘
cd + 文件名 访问该文件
cd.. 访问上一级
cd\ 返回到当前盘符根目录下
cla 清除屏幕
dir 显示当前目录下的文件和子目录信息
Java开发环境(JDK)
如何校验JDK安装是否成功的方法。你无需了解为什么要这么做,只需要严格按照下面的步骤操作即可:
1. 在键盘上按:WIN+R键,这时会弹出运行窗口;
2. 在运行窗口中输入:CMD,按“确定”按钮,这时会弹出DOS窗口;
3. 在DOS窗口中输入:JDK安装路径\bin\java.exe。
一些常用的存储单位:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
需要注意:
(1) Java 严格区分大小写
(2) main 是程序的主方法,程序入口
(3) a++ ++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;
++a ++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式
(4) 【cmd下javac 错误: 编码GBK的不可映射字符】
在cmd窗口下执行javac命令是,写为javac -encoding utf-8 -d. 文件名
-encoding utf-8 -d.
(5) 【输出那里,不要随便空格】
(6) 引用数据类型(如Scanner):
1导包:import java.util.Scanner;
2创建对象实例:Scanner sc = newScanner(System.in);
3调用方法:
int i =sc.nextInt(); 用来接收控制台录入的数字
Strings = sc.next(); 用来接收控制台录入的字符串
(7) continue语句用在循环语句中,它的作用是终止(跳过)本次循环,执行下一次循环。break结束当前循环; contiune 跳出本次循环
(8) switch 没有break的话,会按顺序一直执行
(9) 数字中包含7 : String.valueOf(a).contains("7")
(10) 自定义的引用类型,每次new 都会在堆中开辟一片内存空间
(11) 数组 length ArrayList 集合 .size( ) (数据任意的添加和删除) 字符串 .length( )
(12) 强制类型转型 int a = 9; char b = (char)a;
1) Eclipse 快捷键:
2) 内容辅助键 Alt+/
3) 自动补齐main方法 main 然后 Alt+/
4) 自动补齐输出语句 syso 然后 Alt+/
5) 格式化Ctrl+Shift+f
6) 代码区域右键 --Source – Format
7) 自动导包:Ctrl+Shift+o
8) 如果当前类在多个包中都存在,这时候,使用Ctrl+shift+o,进行选择一个包导入即可。
9) 注释
10) 单行注释
11) 加注释: 先选中需要注释的内容,然后 Ctrl+/
12) 取消注释:先选中需要取消注释的内容, 然后 Ctrl+/
13) 多行注释
14) 加注释: 先选中需要注释的内容,然后 Ctrl+Shift+/
15) 取消注释:先选中需要取消注释的内容, 然后 Ctrl+Shift+\
(13) Ctrl + alt + 下箭头 复制这行代码
(14) //调用父类已经存在的功能使用super super.showNum(); 在子类重写这个(和父类的方法是同一个名字)的方法时,在方法类加上(super.方法名())
(15) 多态:普通,抽象,接口。 运行的都是子类定义的方法
成员变量:定义和引用都看父类
方法运行看子类,但是父类也要有定义
静态方法看父类 静态属于类,和对象无关
(16) 类实现(implements)接口,接口继承(extends)多个接口
(17) 每个类都有它的构造方法
(18) Ctrl +t 查看继承关系
(19) Final 不可变 不能被继承 除构造方法 都能修饰
(20) 类的方法中没有 非静态 就得加静态static
在类里面,如果方法没有涉及到 成员变量,那就应该加静态 static
静态变量或方法 直接用接口或者类名 调用
(21) 导包 ctrl shift + o 类的全名带着包
(22) Protected 权限的类 中的方法 或 参数,只能被子类在子类中用
(23) 我们想在类中定义一个静态常量,通常使用public static final修饰的变量来完成定义。此时变量名用全部大写
如:public static final 数据类型 变量名 = 值;
public static final String COMPANY_NAME="传智播客";
使用类的静态成员时,不需要创建对象,直接使用类名来访问即可
如:Company.COMPANY_NAME
(24) Instanceof 如: obj instanceof Person 判断obj是否为Person 类型
(25) Char 做运算都是先转INT 如:97 = ‘A’ char 记得单引号 ‘ ’
(26) StringBuffer 线程安全,但速度慢。所以,我们用StringBuilder 速度快,不管安全
(27) String 的一些用法:
String1.contains("end") String1中是否包含end
str1.indexOf(str2) str1 中包含 str2 ,str2 在 str1 中的索引位置
(28) 正则: ^ 表示“异或” . 表示任意字符
Matches split replaceAll()
\\ 表示把后面的 符号 转为 正常表示的符号
如:. 在正则中表示任意字符,\\ . 则仅表示为一个点
(29) 有异常 ctrl 1
(30) 毫秒 1000毫秒 = 1秒
毫秒到天数的换算: 毫秒/1000/60(一分钟60秒)/60(一小时60分钟)/24(一天24小时)
转换为毫秒值 Date date = new Date();
long time = date.getTime();
(31) 转 string 直接 String s = I +“ ” 就可以了
也可以用 String s3 = String.valueOf(a);
String s2 = Integer.toString(i,2);
String 转 char char[] c= s.toCharArray();
String 转 byte “sfsfsf”.getBytes();
(32) Integer i = 127; Integer j = 127; 这个,如果是127以内的数字,虚拟机不会新new 一个对象,而是让 j = i
如果是128及以上的数字,就会重新 new 出一个对象
(33) System.arraycopy(arr1, 2, arr2, 1,3);
复制数组:把 arr1 的元素从索引为2的开始,复制到arr2的索引1的后面,复制3个
(34) 集合存对象的时候:当打印array.get[i] 时,实际上打印的是array.get[i] 这个对象的.toString( ) 我们可以在这个对象的类中,改写toString( )
(35) 增强for循环 For( int I : arr ) 遍历arr 数组,不改数据
(36) 泛型:像ArrayList<String> arr = new ArrayList<String>(); 这种,后面需要指明类型的
(37) 迭代器:itrator ollectioncoll = new ArrayList(); Iterator it = coll.iterator();
(38) 泛型的通配符 <?> 限定继承的父类(上限) <? Extends Person >
限定该子类的父类(下限) <? Super Person >
(39) 数组操作: int[] i = {12,4,34,67,3,43};
String s = Arrays.toString(i);
(40) Set<String> set = new HashSet<String>();
Set 无序,无重复元素,只能用迭代器和增强for循环来遍历
(41) String 大小写转换 String start =sWord[i].substring(0, 1).toUpperCase();
Stringend = sWord[i].substring(1).toLowerCase();
(42) 可变参数(本质是数组),随便传几个:Function(int…a){ }
一个方法中只能有一个可变参数;可变参数只能放在参数列表最后
(43) 异常: throw new RuntimeException("run");
RuntimeException 不用在方法的尾巴上加 throws RuntimeException了
如:public static int get(int[]arr) throws Exception{ }
(44) 递归: 构造方法禁止递归
(45) 字节流:换行:\r\n (写在上一句的结尾,或者,下一句的开头)
字符流:换行:FileWriter fw.newLine(); (具有平台无关性)
(46) 字节流的异常处理:
FileOutputStreamfos = null;
try{
fos= new FileOutputStream("d:\\a.txt");
fos.write('p');
byte[]b = "asdf".getBytes();
fos.write(b);
}catch(IOException ex){
System.out.println(ex);
thrownew RuntimeException("文件写入失败");
}finally{
try{
if(fos!=null)
fos.close();
}catch (IOException e) {
thrownew RuntimeException("关闭资源失败");
}
}
(47) fos = newFileOutputStream("d:\\a.txt",true); 给该文本文件续写数据
fos.write('p');
(48) 转换吗?转换流。InputStreamReaderOutputStreamWriter
高效吗?缓冲区对象。BufferedXXX
InputStream
FileInputStream
BufferedInputStream
OuputStream
FileOutputStream
BufferedOuputStream
Writer
OutputStreamWriter
FileWriter à fw.flush();
BufferedWriter
Reader
InputStreamReader
FileReader
BufferedReader à特有功能:br.readLine() 可以读出文件的一行
(49) 静态方法不允许 访问 非静态。静态方法里面不能写,this,super
(50) MySQL auto_increment 自动增长
(51)
JDBC操作数据库的步骤
1.注册驱动
告知JVM使用的是哪一个数据库的驱动
Class.forName("com.mysql.jdbc.Driver");
2.获得连接
使用JDBC中的类,完成对MySQL数据库的连接
url:"jdbc:mysql://localhost:3306/day07"
Connection con = DriverManager.getConnection(url,username, password);
3.获得语句执行平台
通过连接对象获取对SQL语句的执行者对象
PreparedStatement pst = con.prepareStatement(sql);
4.执行sql语句
使用执行者对象,向数据库执行SQL语句
获取到数据库的执行后的结果
ResultSet rs = pst.executeQuery(); 或者 pst.executeUpdate();
5.处理结果
rs.close();
stat.close();
con.close();
6.释放资源 一堆close()
使用 properties 配置时,该文件要放在src 下面
(52) Alt + shift + m 把抽取的代码放进一个方法中
(53) Ctrl + 2 调用的一个新的方法,左边“ 类名 自己取的名字“ 会自动出现
(54) 用 resourceBundle 取properties 文件中的值,properties 的key命名首字母小写
块编辑 alt + shift + a 全变大写 Ctrl + shift + x 全变小写 Ctrl + shift + y
(55) Class 里面的常量 命名要全部大写
(56) 127.0.0.1 本机地址
(57) Tomcat 部署
发布:在底下server部分中,右键选 add and remove
(58)
(59)
(60)
(61)
(62)
(63)
(64)
(65)
(66)
(67)
2-----------------数据库连接-----------------------------
JDBC(配置文件àJDBCUtils类连接数据库à使用JDBCUtils操作)
导包:mysql-connector-java-5.1.39-bin.jar
步骤一:创建Java项目,引入mysql的驱动包.
步骤二:编写程序
步骤三:注册驱动
步骤四:获得连接
步骤五:执行SQL
步骤六:释放资源
配置文件 (jdbc.properties)
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///day07
(或url=jdbc:mysql://localhost:3306/base1)
username=root
password=root
步骤:注册驱动à获取连接à释放驱动
JDBCUtils类
1,定义
static final String DRIVERCLASS;
static final String URL;
static final String USERNAME;
static final String PASSWORD;
2,从jdbc.properties获取数据
static{
//获取数据
ResourceBundle rb =ResourceBundle.getBundle("jdbc");
DRIVERCLASS = rb.getString("driverClassName");
URL = rb.getString("url");
USERNAME = rb.getString("username");
PASSWORD = rb.getString("password");
}
3,获取驱动
static{
try {
//获取驱动
Class.forName(DRIVERCLASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
4,连接数据库
public static Connection getConnection(){
try{
//连接数据库
Return DriverManager.getConnection(URL,USERNAME,PASSWORD);
}catch(Exception ex){
System.out.println(ex+".222");
throw new RuntimeException();
}
}
5,释放连接,关闭
/**
* 释放连接,关闭
* @param con
* @param pre
* @param rs
*/
public static void close(Connection con,PreparedStatement pre,ResultSet rs){
conClose(con);
preClose(pre);
reClose(rs);
}
/**
* 释放Connection连接 (其他两个与这个类似)
* @param con
*/
public static void conClose(Connection con){
if(con !=null){
try{
con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
测试:
Connection con = JDBCUtils.getConnection();
String sql = "select * from student";
PreparedStatement pre = con.prepareStatement(sql);
ResultSet re = pre.executeQuery();
while(re.next()){
System.out.println(re.getString("name"));
}
连接池操作(常用连接池:DBCP,C3P0)
DBCP:(理解) apache组织
1.导入jar包:commons-dbcp-1.4.jar和commons-pool-1.5.6.jar
2.使用api
a.硬编码
//创建连接池
BasicDataSource ds = new BasicDataSource();
//配置信息
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql:///day07");
ds.setUsername("root");
ds.setPassword("1234");
b.配置文件
实现编写一个properties文件
//存放配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("src/dbcp.properties"));
//设置
//prop.setProperty("driverClassName","com.mysql.jdbc.Driver");
//创建连接池
DataSource ds = new BasicDataSourceFactory().createDataSource(prop);
C3P0
导包: c3p0-0.9.1.2.jar
ComboPooledDataSource bs = new ComboPooledDataSource("mydemo");
Connection conn = bs.getConnection();
String sql = "insert into student values(?,?)";
PreparedStatement pre = conn.prepareStatement(sql);
pre.setInt(1,8);
pre.setString(2, "bob");
int i = pre.executeUpdate();
System.out.println(i);
配置文件:c3p0-config.xml
<c3p0-config>
<!-- 默认配置,如果没有指定则使用这个配置 -->
<default-config>
<!-- 基本配置 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property>
<property name="user">root</property>
<property name="password">root</property>
<!--扩展配置-->
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config>
<!-- 命名的配置 -->
<named-config name="mydemo">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/base1</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 如果池中数据连接不够时一次增长多少个 -->
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">20</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">40</property>
<property name="maxStatements">20</property>
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
DBUtils: QueryRunner QueryRunner
update(String sql, Object... params) ,执行更新数据
query(String sql, ResultSetHandler<T> rsh, Object... params) ,执行查询
重要的结果集处理类:BeanHandler,BeanListHandler,MapListHandler,ScalarHandler
closeQuietly(Connectionconn) 关闭连接,如果有异常try后不抛。
是apache组织的一个工具类,jdbc的框架,更方便我们使用
使用步骤:
1.导入jar包(commons-dbutils-1.4.jar)
2.创建一个queryrunner类
queryrunner作用:操作sql语句
构造方法:
new QueryRunner(Datasource ds);
3.编写sql
4.执行sql
query(..):执行r操作
update(...):执行cud操作
- java基础笔记整理
- java入门基础笔记整理
- Java基础笔记整理02
- 笔记整理(java基础七-----问题整理)
- Java笔记整理(2)Java语言基础
- Java笔记整理-02.Java基础语法
- java基础加强 + xml + HTTP 笔记整理
- JAVA基础学习精简心得笔记整理
- 笔记整理(java基础六-----异常)
- 笔记整理(java基础八-----多线程)
- 笔记整理(java基础十----集合)
- Java基础笔记整理---【03】标识符
- Java基础笔记整理---【04】基本数据类型
- 黑马程序员--- 笔记整理(java基础七-----问题整理)
- 整理JAVA学习笔记 JAVA基础需要掌握重点
- Java笔记整理——Java语言基础
- es6基础笔记整理
- 笔记整理(java基础一---环境配置,架构特点..)
- springboot创建一个可执行的jar
- NLP计算词相关关系之word2vec
- android 关于view的绘制
- 浅谈Git(一)
- Java基础第5讲--循环控制语句
- java基础笔记整理
- PHP程序如何debug?
- 张宴:Tokyo Cabinet数据库及其扩展应用
- UNIX命令行快速入门2
- STM32寄存器操作端口模式SDA_OUT()/SDA_IN()
- 10大H5前端框架
- 安卓面试题一
- 常用的一种图片预加载方式
- Docker在windows环境 使用阿里云镜像 pull 报错 x509: certificate signed by unknown authority