整理以前写好的个人学习笔记,后续学习会慢慢完善,有错误欢迎指正
目录
目录
一、引入和概述
一、软件是什么?
二、Java简介
三、用记事本编写java
四、Eclipse的使用
五、注释和规范
二、基本程序设计
一、关键字保留字
二、标识符(凡是自己可以命名的就是标识符)
三、数据类型
四、集成开发环境
五、运算符
三、流程控制语句
四、String类和Math类
String类:字符串处理
Math类:数学函数
五、格式化处理
Format类
一、NumberFormat类
二、DateFormat类
三、MessageFormat类
一、引入和概述
一、软件是什么?
1.软件是一系列按照特定顺序组织的计算机数据和指令的集合,分系统软件和应用软件。
2.人机交互方式:图形化界面+命令行方式
二、Java简介
Java作为一门面向对象的语言,继承C和C++的许多成分,用引用取代了C的指针,并有自动的垃圾回收系统,并且在Java平台被编译为体系结构中的字节码格式,因此可以"Write once,run anywhere",即在任何平台运行。
1.Java的三大特性:封装、继承、多态
2.Java的核心机制:JVM虚拟机、GC垃圾回收机制
3.JDK(开发开源工具包)、JRE(运行环境)
4.优点:代码复用性强、便于开发和维护、代码可靠且灵活、可读性可扩展性高
三、用记事本编写java
win+r打开运行,输入cmd打开命令行
切换目录命令:cd java文件所在盘
编译命令:javac Test.java
编译完成运行命令: java Test.java
四、Eclipse的使用
1.代码调试
- 双击设置断点,跟踪调试,查看变量的变化。F5单步执行,遇到子函数就进入并且继续单步执行,F6在单步执行时,将子函数整个执行完再停止,F7单步返回
2.快捷键
F1 | 快速修复当前光标的问题 |
F4 | 打开类型结构 |
Ctrl+Y | 重做,和Ctrl+Z相反 |
Ctrl+/ | 注释选中行,再按取消注释 |
Ctrl+W | 关闭当前编辑的 |
Ctrl+T | 查看当前继承关系 |
Alt+/ | 内容辅助 |
Shift+上下左右的键 | 选中,再加Ctrl时可以一个单词一个单词选,而不是一个字符一个字符了 |
Alt+Shift+M | 把代码抽取成方法 |
Alt+Enter | 查看当前选择资源的属性 |
五、注释和规范
一、命名规范
1.驼峰命名法:
大驼峰:每个单词第一个字母大写(StudentType),用于类名、函数名、属性名、命名空间。
小驼峰:第一个字母小写,后面的单词大写(studentTime),用于方法名、参数名、成员变量、局部变量
2.基本原则:
起的名字要做到能望名知义,不要太长,避免使用相似或者仅在大小写上有区别的名字。
二、注释
1.单行注释:以双斜杠“//”标识,只能注释一行内容,用在注释信息内容少的地方。
2.多行注释:包含在“/*”和“*/”之间,能注释很多行的内容。
3.文档注释:包含在“/**”和“*/”之间,也能注释多行内容,一般用在类、方法和全局变量上面
4.Javadoc标签:
常用标签实例:
@author | 标识作者 |
@time | 标识时间 |
@version | 标识版本 |
@param | 说明参数含义 |
@return | 说明返回值类型 |
二、基本程序设计
一、关键字保留字
1.关键字:在关键地方使用的单词,体现关键的含义
2.保留字:现Java版本使用,但可能以后被用作关键字,命名标识符的时候要避免
二、标识符(凡是自己可以命名的就是标识符)
1.不以数字开头,不加空格,不以关键字和保留字命名
2.命名规范:
包名:都小写
接口名、类名:大驼峰
变量名、方法名:小驼峰
常量名:所有字母大写,用_连接
三、数据类型
注意: 1. long a=3l; float a =1.22f或1.22F;
2.引用类型,可以用null作为初始值,String的值不可变
3.相同内容时,其实是引用一个内容地址
四、集成开发环境
正常顺序
创建java文件,用文本编辑器打开,写代码,打开DOS界面,先javac命令编译,再java命令运行
(而集成开发环境,可以文本编辑,自动编译,简化运行,随时调试)
五、基本数据类型转换
1.自动类型转换(小容量转换成大容量)(小->大)
当多种数据混合运算时,系统首先自动将所有数据转换成当中容量最大的
当任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动转换为字符串类型
2.强制类型转换(大容量转换成小容量)
eg:byte=(byte) k;
String a = "43"; int I = Integer.parseInt(a);
注意:通常字符串不能直接转换为基本数据类型,但可以通过基本数据类型对应的包装类转化为基础类型
五、运算符
1.算术运算符:+、-、*、/、++、--(char类型可以做数学运算)
2.赋值运算符:=、+=、-=、*=、/=、%=
3.比较运算符:==、!=、<、>、>=、<= (判断结果为true、false)
4.逻辑运算符:&、|、&&、||、!、^
5.位运算符: 无符号的移动空位补0,有符号的移动看首位,补同样的
<< 左移
>> 右移
>>> 无符号运算
eg:m<<n == n*(2^n)
m>>n == n/(2^n)
6.三元运算符(三目运算符)
6.1格式:(条件表达式)?表达式1 :表达式2
(为true时执行)(为false时执行)
三、流程控制语句
一、顺序结构
顺序执行代码
二、分支结构
1.if-else结构语句:
if (表达式) {
语句块1;
} else {
语句块2;
}
2.多条件 if-else-if 语句:
if(表达式1) {
语句块1;
} else if(表达式2) {
语句块2;
...
} else if(表达式n) {
语句块n;
} else {
语句块n+1;
}
3.switch case语句
switch(表达式) {
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
…
case 值n:
语句块n;
break;
default:
语句块n+1;
break;
}
三、循环结构
1.while语句:
while(条件表达式) {
语句块;
}
2.for语句:
for(赋值语句;条件语句;迭代语句) {
语句块;
}
3.foreach语句:
for(类型 变量名:集合) {
语句块;
}
4.break语句:退出当前循环
5.使用 break 语句实现 goto 的功能(break 带标签):退出label处
四、String类和Math类
String类:字符串处理
一、如何定义String
String a = "Hello java" ;
String a = new String;
String a = new String(str1);创建str1的副本
String str = new String(a);a为字符数组
二、String字符串与整型int的相互转化
1.String 转 int
Integer.parseInt(str);
Integer.valueOf(str).intValue();
2.int 转 Stirng
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = ""+I;
三、字符串的拼接
1."+",连接字符串
2.str.concat(str1);str1接到str后面
四、字符串长度
1.str.length()
五、大小写转换
str.toLowercase(); 转小写
- str.toUppercase(); 转大写
六、去除字符串里的空格
str.trim()
七、分割字符串
1.不限元素数: String[]arr1= str.split(",");(以逗号分隔字符串)
2:限元素数: String []arr2=str.split(",",3);
八、提取
Str.substring(a,b);
Str.substring(a)(a到结尾的数)
九、替换
1.str.replace(" old","new");
2.str.replaceFirst("old","new");只替换第一个符合的字符串
3.str.replaceAll("old","new");将所有符合的字符串都替换
十、比较
考虑大小写的比较 str.equals(str1);
不考虑 str.equalsIngnoreCase(str1);
注意:java里,如果是基本数据类型的比较,会比较值是否相等,如果是引用类型,则比较地址值是否相等
十一、null和空字符
" "是一个长度为0且占内存的空字符串,可以用对象的方法,而null是空引用,没有分配内存
十二、字符串的匹配
1.只是判断符不符合,可以直接用matches
Striing str;//要验证的内容
String regex = " ";//需要匹配的内容的正则表达式
str.matches(regex);
2.提取匹配信息,使用Pattern类和Matcher类
String regex = " ";//需要匹配的内容的正则表达式
Pattern p =Pattern.compile(regex);//将要匹配的正则编译成Pattern类的实例
Matcher m =p.matcher(str);//拿得到的模式创建Matcher对象
m.matches();//匹配判断结果
while (matcher.find()) {
System.out.pringtln("matcher.group(0)");//匹配到的信息
}
十三、常用的正则表达式字符
字符 | 说明 |
\s | 匹配空白字符 |
\d | 匹配 0~9的数字 |
\w | 匹配所有的单词字符,包括 0~9 所有数字、26 个英文字母和下画线 |
\D | 匹配非数字 |
\W | 匹配所有的非单词字符 |
$ | 匹配一行的结尾 |
^ | 匹配一行的开头 |
() | 标记子表达式的开始和结束位置 |
[ ] | 表示可匹配的内容,[ab]、[a-z]、[^ab](非ab)、还可以配合&&与||使用 |
十四、常用正则表达式
正则表达式由普通字符和元字符组成,简单而实用。
简单来说,就是匹配字符串的模板(模式)
用到过的正则表达式,备份下
匹配时间 | ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]) |
匹配中文 | [u4e00-u9fa5] |
匹配网址URL | [a-zA-z]+://[^s]* |
匹配日期(用.分割的) | ((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]|[0-9][1-9][0-9]{2}|[1-9][0-9]{3})\\.(((0?[13578]|1[02])\\.(0?[1-9]|[12][0-9]|3[01]))|(([469]|11)\\.([1-9]|[12][0-9]|30))|(2\\.([1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})([48]|[2468][048]|[13579][26])|(([48]|[2468][048]|[3579][26])00))\\.2\\.29)) |
Math类:数学函数
一、常用的静态变量
Math.PI π 圆周率
Math.E e 自然对数
二、常用的函数
Math.ceil() | 向上取整 |
Math.floor() | 向下取整 |
Math.abs() | 取绝对值 |
Math.max(a,b) | 返回a和b中的最大值 |
Math.min(a,b) | 返回a和b中的最小值 |
Math.sin(弧度角) | 计算正弦值,其他三角函数同理 |
Math.pow(a,b) | 计算a的b次方 |
Math.cbrt(a) | 计算a的立方 |
Math.sqrt(a) | 计算a的平方 |
Math.log(a) | 计算的是ln a |
Math.log10(a) | 计算得是lg a |
Math.random() | 产生0到1的随机数 |
//如果要算别的对数可以转换一下 log2 3 = ln2 / ln 3;
//如果要改变随机数范围(a,b) a+(Math.random()*b) ;
五、格式化处理
Format类
Format 是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类。
Format类的实例化:
Format f = NumberFormat.getCurrencyInstance();
Format f = DateFormat.getDateInstance();
Format f = new MessageFormat("hello");
一、NumberFormat类
double num = 56.888;
String s = NumberFormat.getCurrencyInstance().format(num); //加上当前语言的货币单位
String s = NumberFormat.getPercentInstance().format(num); //百分数格式
String s = NumberFormat.getNumberInstance().format(num); //通用数值格式
DecimalFormat 类
位数多了,会自动四舍五入
特殊符号 | 说明 |
0 | 显示数字,不够则补 0 |
# | 显示数字,不够则不发生变化 |
. | 小数分隔符 |
% | 乘以 100 后以百分比显示 |
\u2030 | 乘以 1000 后一千分数显示 |
eg:
DecimalFormat df = new DecimalFormat("0.0000");
DecimalFormat df0 = new DecimalFormat("##.##");
df.format(num); //56.8880
df0.format(num); //56.89
二、DateFormat类
1.
Date d = new Date();
System.out.println(d);//输出的是这种格式:Sat Aug 13 10:00:20 CST 2022
2.
String s = DateFormat.getDateInstance().format(d);
s = DateFormat.getDateInstance(DateFormat.DEFAULT).format(d);
System.out.println(s);//输出的格式就是2022-08-13,和default(默认)的一个格式
3.
s = DateFormat.getDateInstance(DateFormat.FULL).format(d);
System.out.println(s);//输出:2022年8月13日 星期六
4.
s = DateFormat.getDateInstance(DateFormat.SHORT).format(d);
System.out.println(s);//输出格式:14-8-30
5.
s= new SimpleDateFormat("现在是 " + "yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");
System.out.println(s.format(d)); //现在是 2022 年 08 月 13 日 星期六 10 点 07 分 16 秒