目录html
第5章核心类
5.1java.lang.Object
1.java.lang.Object类表示一个Java对象。实际上,全部的类都直接或间接地派生自这个类。
5.2java.lang.String
1.java.lang.String是最常使用的一个类,而且绝对也是最重要的类之一。一个String对象是常量,一旦建立了,不能修改其值。
2.一般将一个字符串字面值赋值给一个String引用变量,而非用关键字构建一个String引用变量。
5.2.1比较两个字符串
1.使用==操做符比较两个String对象s1和s2。若相同,(s1==s2)计算为true;若不一样,(s1==s2)计算为false。
5.2.2字符串的字面值
1.可使用加号把两个字符串字面值链接起来:“”+“”;也能够将一个String和一个基本数据类型或其余的对象链接起来:“”+3
5.2.6String类的方法
1.valueOf方法将一个基本类型、一个字符数组或Object的一个实例转换为一个字符串表示。例如,以下的代码返回字符串“23”:String.valueOf(23)。
2.Format方法容许你传递任意数目的参数。要指定一个参数,使用%s表示法,表示数组中的下一个参数。例如,以下是对printf方法的一次方法调用:java
String firstName=“John”; String Lastname=“Adams”; System.out.format(“First name: %s. Last name: %s”, firstName,lastName);
5.3 java.lang.StringBuffer和java.lang.StringBuilder
1.String对象是不可变的。最好使用java.lang.StringBuffer和java.lang.StringBuilder类。一旦完成了对字符串的操做,能够将一个StringBuffer或StringBuilder对象转换为一个String对象。StringBuffer类是为了可变的字符串而单独使用的,方法同步,适合在多线程环境中使用。StringBuilder是StringBuffer的异步版本。
5.5java.lang.Class
1.代码清单5.1 ClassDemo类android
package app05; public class ClassDemo{ public static void main(String[] args){ String country="Fiji"; Class myClass=country.getClass(); System.out.println(myClass.getName()); Class klass=null; try{ klass=Class.forName("app05.Test"); }catch(ClassNotFoundException e){ } if(klass!=null){ try{ Test test=(Test) klass.newInstance(); test.print(); }catch (IllegalAccessException e){ }catch (InstantiationException e){ } } } }
5.6 java.lang.System
1.System类的三个字段是out、in和err:
out字段表示标准的输出流;
err字段也表示一个PrintStream对象,默认状况下,输出也会从当前调用Java程序的地方通向控制台。其目的是显示那些应该当即引发用户注意的错误消息;
in字段表示输入标准流。
2.代码清单5.2 InputDemo类git
public class Employee{ public int age; public double salary; public Employee(){ } public Employee(int ageValue, double salaryValue){ age=ageValue; salary=salaryValue; } }
5.7 java.util.Scanner
1.可使用Scanner来获取键盘输入,在实例上调用next方法。next方法会缓存用户从键盘或其余设备输入的字符。
2.代码清单5.3 使用Scanner来接受用户输入数据库
package app05; import java.util.Scanner; public class ScannerDemo{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); while(true){ System.out.print("What's your name?"); String input=scanner.nextLine(); if(input.isEmpty()){ break; } System.out.println("Your name is"+input+"."); } scanner.close(); System.out.println("Good bye"); } }
第6章 数组
6.1 概览
1.每次建立一个数组,在后台,编译器都要建立一个对象以容许:
(1)经过length字段来获取数组中的元素的数目。
(2)经过指定一个索引来访问每个元素。
一个数组是一个Java对象。
6.5 查找一个数组
1.代码清单6.1 一个二分查找的示例vim
package app06; import java.util.Arrays; public class BinarySearchDemo{ public static void main(String[] args){ int[] primes={2,3,5,7,11,13,17,19}; int index=Arrays.binarySearch(primes,13); System.out.println(index); index=Arrays.binarySearch(primes,4); System.out.println(index); } }
代码清单6.1中的BinarySearchDemo类使用了一个int类型的数组,它包含了前8个素数。传入13做为查找键,将会返回5,由于13是该数组中的第6个元素,其索引为5.传入4做为查找键,将会找不到匹配,该方法返回-3.这是-2减去1的结果。若是要将该键插入到数组中的话,它本应该插入到索引2的位置。
6.6 给main方法传入一个字符串数组
1.代码清单6.2 访问main方法的参数数组
package app06; public class MainMethodTest{ public static void main(String[] args){ for (String arg:args){ System.out.println(arg); } } }
6.7 多维数组
1.代码清单6.3 一个多维数组缓存
package app06; import java.util.Arrays; public class MultidimensionalDemo{ public static void main(String[] args){ int[][] matrix=new int[2][3]; for(int i=0;i<2;i++){ for(int j=0;j<3;j++){ matrix[i][j]=j+i; } } for(int i=0;i<2;i++){ System.out.println(Arrays.toString(matrix[i])); } } }
第8章错误处理
8.1 捕获异常
1.try一般和catch和finally使用。错误处理的步骤能够归纳以下:
(1)将可能致使一个错误的代码隔离到一个try语句块中。
(2)对于每个单个的catch语句块,编写出若是try语句块中发生特定类型的一个异常,将要执行的代码。
(3)在finally语句块中,编写出不论是否发生错误都将运行的代码。
2.代码清单8.1 NumberDoubler类多线程
package app08; import java.util.Scanner; public class NumberDoubler{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String input=scanner.next(); try{ double number=Double.parseDouble(input); System.out.printf("Result:%s",number); }catch(NumberFormatException e){ System.out.println("Invalid input."); } scanner.close(); } }
[](https://img2018.cnblogs.com/blog/1607929/201903/1607929-20190316113255047-589450971.pngapp
第9章 操做数字
9.1 装箱和拆箱
1.将一个基本类型转换为一个包装类对象,称为装箱(boxing);从一个包装类对象转换为基本类型,称为拆箱(unboxing)。
装箱——
Integer number=3;//assign an int to Integer
拆箱——
Integer number=new Integer(100); int simpleNumber=number;
9.2 数字解析
1.数字解析的目的是将一个字符串转换为一个数字基本类型。若是解析失败,例如,因为字符串不是一个数字或者是一个超出了指定范围的数字,程序将会抛出一个异常。
2.代码清单9.1 解析数字(NumberTest.java)
package app09; import java.util.Scanner; public class NumberTest{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String userInput=scanner.next(); try{ int i=Integer.parseInt(userInput); System.out.println("The number entered:"+i); }catch(NumberFormatException e){ System.out.println("Invalid user input"); } } }
9.3 数字格式化
1.代码清单9.2 NumberFormatTest类
package app09; import java.text.NumberFormat; import java.util.Locale; public class NumberFormatTest{ public static void main(String[] args){ NumberFormat nf=NumberFormat.getInstance(Locale.US); System.out.println(nf.getClass().getName()); System.out.println(nf.format(123445)); } }
9.6 计算货币
1.float和double都不适合于计算货币。
2.代码清单9.3 使用BigDecimal
package app09; import java.math.BigDecimal; public class BigDecimalDemo{ public static void main (String[] args){ double balance=9.99; balance-=0.10F; System.out.println(balance); BigDecimal balance2=BigDecimal.valueOf(9.99); BigDecimal accountFee=BigDecimal.valueOf(.1); BigDecimal r=balance2.subtract(accountFee); System.out.println(r.doubleValue()); } }
9.7 生成随机数
1.代码清单9.4 随机数生成器
package app09; public class RandomNumberGenerator{ public int generate(){ double random=Math.random(); return(int)(random*10); } public static void main(String[] args){ RandomNumberGenerator generator= new RandomNumberGenerator(); for(int i=0;i<10;i++){ System.out.println(generator.generate()); } } }
从图中能够看出全部异常类型都是内置类Throwable的子类,于是Throwable在异常类的层次结构的顶层。
接下来Throwable分红了两个不一样的分支,一个分支是Error,它表示不但愿被程序捕获或者是程序没法处理的错误。另外一个分支是Exception,它表示用户程序可能捕捉的异常状况或者说是程序能够处理的异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常。
Java异常又能够分为不受检查异常(Unchecked Exception)和检查异常(Checked Exception)。
Error:Error类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操做无关。例如,Java虚拟机运行错误(Virtual MachineError),当JVM再也不有继续执行操做所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)通常会选择线程终止;还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、连接错误(LinkageError)。这些错误是不可查的,由于它们在应用程序的控制和处理能力以外,并且绝大多数是程序运行时不容许出现的情况。对于设计合理的应用程序来讲,即便确实发生了错误,本质上也不该该试图去处理它所引发的异常情况。在Java中,错误一般是使用Error的子类描述。
Exception:在Exception分支中有一个重要的子类RuntimeException(运行时异常),该类型的异常自动为你所编写的程序定义ArrayIndexOutOfBoundsException(数组下标越界)、NullPointerException(空指针异常)、ArithmeticException(算术异常)、MissingResourceException(丢失资源)、ClassNotFoundException(找不到类)等异常,这些异常是不检查异常,程序中能够选择捕获处理,也能够不处理。这些异常通常是由程序逻辑错误引发的,程序应该从逻辑角度尽量避免这类异常的发生;而RuntimeException以外的异常咱们统称为非运行时异常,类型上属于Exception类及其子类,从程序语法角度讲是必须进行处理的异常,若是不处理,程序就不能编译经过。如IOException、SQLException等以及用户自定义的Exception异常,通常状况下不自定义检查异常。
Error和Exception的区别:Error一般是灾难性的致命的错误,是程序没法控制和处理的,当出现这些异常时,Java虚拟机(JVM)通常会选择终止线程;Exception一般状况下是能够被程序处理的,而且在程序中应该尽量的去处理这些异常。
问题1解决方案:
Linux Bash下调试代码:在相应文件夹下选择在终端打开——用vim生成HelloJDB.java——直接javac -g -d HelloJDB.java——java HelloJDB
调试基础——
方法断点:stop in HelloJDB.main;stop at HelloJDB:12
行断点:stop in HelloJDB.main-run-locals-step(next)-locals-print i-print j-list
条件断点:
临时断点:
使用:jdb -classpath .:./bin HelloJDB 调试程序;JDB不支持条件断点和临时断点
实例:类的调试-递归学习
问题2解决方案:(1)数据库链接测试
(2)访问数据库表-封装新增留言信息-测试:
https://gitee.com/EvelynYang/20189230/tree/master/src
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 1/3 | 18/38 | |
第三周 | 500/1000 | 1/4 | 38/76 |