notes

假设需要将体重和身高与一个人的名字和出生日期相关联,虽然可以分别声明几个变量才存储这些值,但这些值没有内在的耦合关联,将他们耦合在一起的方法就是创建一个包含它们的对象

1.输出格式double的小数位精确

Scanner sc = new Scanner(System.in);

sc.next() 读取空白字符结束的字符串
sc.nextLine() 读取回车结束的字符串 使用nextInt nextDouble next() 之

后再使用nextLine会有问题

不要在nextDouble() nextInt() 、next()等之后使用nextLine()

/t tab
/n 换行
/f 换页
/r 回车

Math.random() 返回0到1之间,不包括1,包括0.0
Math.pow(x,2)
Math.abs() 绝对值
Math.sqrt() 平方根
Math.min() max()

Character.isDigit(ch) 是否数字
。。。。.isLetter(ch) 是否字母
.toLowerCase(ch)
.toUpperCase(ch)

String.length(0
String.charAt(index)
String.concat(String s1)
String.toUpperCase()
String.toLowerCase(0
String.trim() 去掉空白符包括转义字符

String.equals(s1)
String.equalsIgnoreCase(s1)
String.compareTo(s1) 返回字符串比较后的差值,
String.compareToIgnoreCase(s1)
String.startsWith(特定前缀)返回true
String.endWith(特定后缀)
String.contains(s1) 是否包含子串
String.replace('h','j')

String.substring(beginIndex) 指定索引到结尾
String.substring(beginIndex,endIndex) 指定索引到结束索引,不包含结束索

这个方法是全小写!!!!

String.indexOf(ch) 返回第一个出现字符 ch 的索引,无匹配,则返回-1
String.indexOf(ch, fromIndex) 从开始索引fromIndex后出现的第一个ch
String.indexOf(String s)

int value = Integer.parseInt(intString) 将数字内容的字符串转换为数字

若超出int 范围会如何?
或char '9' - '0'
如何将数字转换为字符? String.valueOf(9) + String1
数字int 或long 转字符串 + “”

字符转字符串 char c + 字符串即可自动转型
string 和int之间的转换

string转换成int :Integer.valueOf("12")

int转换成string : String.valueOf(12)

char和int之间的转换

首先将char转换成string

String str=String.valueOf('2')

Integer.valueof(str) 或者Integer.ParseInt(str)

Integer.valueof返回的是Integer对象,Integer.paseInt返回的是int

int转成数字型char字符 加上 48再强制转换,因为 ASCII 编码 48 到 57 为

字符 '0' ~ '9' 的编码。

A到Z 65--90 中间6个字符[ \ ] ^ _ ` 小写从 a 97 a~z 97-122

int 和 string 的逆序

类似 double

java中 double 类型只是一个简单类型,是不能其输出位数及精度是固定的
可以利用其它方法进行位数输出,如:
方法一、使用
Math.round()

Double value = 0.254668;

(double)Math.round(value*100)/100

public static void main(String[] args) {
// 1. 使用 String.format() 方法
double data = 11.8982389283293;
System.out.println(String.format("%.2f", data));
// 2. 使用 printf 输出
System.out.printf("%.2f", data);
// 3. 使用 DecimalFormat 对象格式化
DecimalFormat format = new DecimalFormat("#.00");
System.out.println(format.format(data));

多重循环跳出和继续用标识符

% 是 10 % 2 == 0

while ( a || b ) do .. 需要a 和b均不成立才能跳出循环

数组:
int [] list = new int [length];
myList.length
处理数组随机打乱:每个下标元素随机产生一个下标互换

foreach
for (double e :myList ){
仅能用于遍历数组
sout(e); 不能用myList[e]
}

二分查找
选择排序
冒泡排序
for (int n = 0 ; n<list.length;n++){
for (int i = 0 ; i< list.length-1;i++){
if (list[i]>list[i+1]){
temp = list[i];
list[i] = list[i+1];
list[i+1] = temp;
}
}
}

java.util.Arrays.sort(list[])
java.util.Arrays.parall(list[]) 多处理器并行操作
java.util.Arrays.binarySearch(list[],number) 升序排列后二分查找 若不

存在元素则返回 -(插入点下标+1)
java.util.Arrays.fill(list[],number)
java.util.Arrays.fill(list[],beginIndex,endIndex,number)
java.util.Arrays.toString(list[])

System.arraycopy(list,0,newList,0,list.length) 复制整个数组,需先初始

化 newList
int[] a1 = {1, 2, 3, 4, 5};

int[] a2 = new int[10];

System.arraycopy(a1, 1, a2, 3, 3);

System.out.println(Arrays.toString(a1)); // [1, 2, 3, 4, 5]

System.out.println(Arrays.toString(a2)); // [0, 0, 0, 2, 3, 4, 0, 0,

0, 0]

public static void method(int...arg) args实际上是数组

startTime = System.currentTimeMillis();

endTime = System.currentTimeMillis();

executionTime = endTime - startTime;

Arrays.toString(list)

String.length()

数组中除了交换值,还可以交换索引值

扑克牌随机洗牌:随机生成索引值进行互换

System.currentTimeMillis()获取当前毫秒值
Date类:
java.util.Date date = new java.util.Date();
date.getTime()
date.toString() Mon Dec 26 07:43:39 EST 2011

Random():以当前时间为种子创建Random对象

javafx.geometry.Point2D

Point2D p1 = new Point2D(x1,y1);
p1.distance(p2);

String 类

welcome.replace('e','A') wAlcomA
welcome.replaceFirst("e","AB") wABlcome
welcomw.replace("e","AB") wABlcomAB
replaceAll("","")

"Java#HTML#Perl".split("#") Java HTML Perl 字符串数组

“Java”.toCharArray()

String.valueOf( new char[] {'j','a','v','a'} );

正则表达式

Integer.parseInt(str)

String.matches("Java.*")

\d 单个数字位 \d{3} 三个数字

“a+b#c”.replaceAll("[+#]","NNN") aNNNbNNNNNNc

String.format("%7.2f%6d%-4s",45.556,14,"AB")
-45.56--14AB-

StringBuilder.append(“”)

子父类构造方法链
多态:父类变量可以指向子类对象
变量的声明类型和实际类型
方法调用时 按照引用变量的实际类型(new 的类型)

ArrayList

add(Object o)
clear()
contains( Object o)
get(int index)
indexOF(Object o)
isEmpty()
remove(Object o)
set(in index,Object o)

new ArrayList<String>(Arrays.asList(array) );将数组列表的元素构造出一

个ArrayList

java.util.Collections.sort(ArrayList) 数值和字符串进行排序
java.util.Collections.max(ArrayList)
java.util.Collections.min(ArrayList)
java.util.Collections.shuffle(ArrayList) 随机打乱

异常捕获:
异常是一种对象,从异常类继承 java.lang.Throwable

异常:Exception: ClassNotFoundException IOException

RuntimeException(ArithmeticException NullPointEception

IndexOutOfBoundsException IllegalArgumentException )

系统错误:Error: LinkageError VirtualMachineError

声明异常 在方法参数后声明要throw的异常
抛出异常:
捕获异常:

如果try 抛出异常,try中其余语句会被跳过
catch 父类的异常则 可以捕获所有子类的异常
父类catch出现在子类catch之前会报错,应先catch子类的异常,再catch 父类

异常

方法调用会先被原方法中的catch捕获

如果没有异常:执行try 和finally以及之后的后续语句
264 如果异常被捕获:执行catch语句及finally 及后续语句
265 如果异常未被捕获:则将异常传递给调用者或执行finally后程序中止,后续语句不会被执行

无论是否有异常产生,均执行:finally

try {
statements;
}catch (Exception){
handling ex;
}finally{
finalStatements;
}

如果没有异常:执行finalStatements,再执行try语句的下一条
有异常并被捕获:执行catch和finally后再继续之后的语句
如果异常没被捕获:跳过try 执行finally 并将异常传递给方法调用者

即使finally 有return语句,finally 还是会执行

Exception.printStackTrace() 先打印接收到的最近的异常路径,再打印调用者

的调用者,一直到最开始出现异常的方法中

方法头不应该声明error和runtimeException 只声明IOException类似的受查异

常(checked Exception)

日期格式处理:
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd

HH:mm:ss");

创建文件:
public boolean createNewFile()

File file = new File("C:\a.txt");
file.createNewFile();

创建目录:
public boolean mkdir()
public boolean mkdirs() 若父文件夹不存在,则创建父文件夹

同样在File 的构造方法参数中传文件夹的路径

删除文件或文件夹
public boolean delete()

String getName() 返回路径中最后部分表示的文件或文件名
long length() 返回路径中表示的文件的字节数
String getAbsolutePath() 获取绝对路径的String对象
File getAbsoluteFile() 获取绝对路径的对象

new File("C:\Users\q06285\Desktop\qzqz")
String getName()

同样在File 的构造方法参数中传文件夹的路径

boolean exists() 判断File构造方法中封装路径是否存在
boolean isDirectory() 判断是不是文件夹
boolean isFile() 判断是不是文件
static File[] listRoots() 列出可用的文件系统根

String[] list() 获取File构造方法中路径的文件和文件夹名。遍历一个目录,

返回文件名
File[] listFiles() 返回的是指定目录下的文件和文件夹的全路径

文件过滤器:
自定义过滤器,实现FileFilter接口,重写抽象方法 accept
public String[] list(FilenameFilter filter)

public File[] listFiles(FileFilter filter) 参数为自己重写的过滤器实现

FileFilter接口

字节流:InputStream OutputStream
字符流:Reader Writer

IO程序:
使用前:导入IO
使用时:进行IO异常处理
使用后:释放资源(finally)

void write(byte[] b)
void write(byte[] b,int startIndex,int length)

FileOutputStream fos = new FileOutputStream("C:we.txt")
创建流对象后调用write方法写数据
byte[] bytes = {65,66,67,68};
fos.write(bytes);

写入字符串:fos.write("hello".getBytes() );

文件追加 类型shell的>>
new FileOutputStream("C:we.txt",true);
换行:
fos.write("123\r\nworld".getBytes());

IOException :

//try 外面声明变量,try 里面建立对象
FileOutputStream fos = null;
try{
fos = new FileOutputStream("s:\a.txt");
fos.write(100);
}catch(IOException ex){
System.out.println(ex);
throw new RuntimeException("文件写入失败,重

试");
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException ex){
throw new RuntimeException("关闭资源失

败");
}
}

字节输入流 FileInputStream

(char)new FileInputStream("c.txt").read();返回读取的一个字节,文件尾

返回-1

int len = read(byte[] b) 读取一定数量字节,存储到缓冲区的数组b中
len 表示读取到多少个有效字节,若不是正好读取到最后一个字节,则会重新往

回读取,但byte数组的长度为有效字节的个数,超过文件尾的数组其余部分为倒

序的数组

java.io.Write

write(int c) int值的ASCII码
write(char[] c)
write(char[] c,int index,int length)
write(String s)

int read() 读取单个字符
int read(char [] cbuf) 将字符读到char数组中,返回值为成功读取的字符数

java.io.File file = new java.io.File("Score.txt");

Scanner in = new Scanner(file);

java.io.PrintWriter output = new java.io.PrintWriter(file) 如果文件不

存在,则创建该文件

output.close();

new Scanner(Paths.get("c:\mydirectory\myfile.txt"),"UTF-8");

Runtime.addShutdownHook

日志:

Logger.getGlobal().info("File->Open menu item selected");

Logger.getGobal().setLevel(Level,OFF);

try{
Thread.currentThread().sleep(5 * 1000);
} catch (InterruptedException e){ }

多线程:
并发:一个时间段内的同时运行
并行:同一时刻点同时运行

线程调度:
分时调度
抢占式调度:Java 实有抢占式,优先级高的优先运行,相同的优先级随机选择

继承Thread类创建并启动线程:
1.定义Thread类的子类,重写run()方法,方法体代表线程需要完成的任务
2.创建该子类的对象,即创建了线程对象
3.调用线程对象的start()启动线程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,362评论 0 4
  • PARAMETERIZE ARRAYS WITH TYPES In Scala, you can instanti...
    RxCode阅读 772评论 0 0
  • 一. Java基础部分.................................................
    wy_sure阅读 3,784评论 0 11
  • Java 语言支持的类型分为两类:基本类型和引用类型。整型(byte 1, short 2, int 4, lon...
    xiaogmail阅读 1,342评论 0 10
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,344评论 0 17