Java语言程序与数据结构(基础篇)-随记
有关代码见BasicJava
U1-Java概述
1-程序设计风格和文档
1.注释风格
注释:// ; 块注释:/* ~ / ; javadoc注释:/* ~ */
javadoc注释
eg.
/**
* @link:{@link 包名.类名#方法名(参数类型)} 用于快速链接到相关代码
*
* @link的使用语法{@link 包名.类名#方法名(参数类型)},其中当包名在当前类中已经导入了包名可以省略,可以只是一个类名,也可以是仅仅是一个方法名,
* 也可以是类名.方法名,使用此文档标记的类或者方法,可用通过按住Ctrl键+单击 可以快速跳到相应的类或者方法上,解析成html其实就是使用< code> 包名.类名#方法名(参数类型)< /code>
*
* @code: {@code text} 将文本标记为code
*
* {@code text} 会被解析成<code> text </code>
* 将文本标记为代码样式的文本,在code内部可以使用 < 、> 等不会被解释成html标签, code标签有自己的样式
* 一般在Javadoc中只要涉及到类名或者方法名,都需要使用@code进行标记。
*
* @param: 一般类中支持泛型时会通过@param来解释泛型的类型
* @author: 详细描述后面一般使用@author来标记作者,如果一个文件有多个作者来维护就标记多个@author,@author 后面可以跟作者姓名(也可以附带邮箱地址)、组织名称(也可以附带组织官网地址)
* @see: 一般用于标记该类相关联的类,@see即可以用在类上,也可以用在方法上。
* @since: 一般用于标记文件创建时项目当时对应的版本,一般后面跟版本号,也可以跟是一个时间,表示文件当前创建的时间
* @version: 用于标记当前版本,默认为1.0
* @return: 跟返回值的描述
* @value: 用于标注在常量上,{@value} 用于表示常量的值
* 此外还有@serial、@serialField、@serialData、{@docRoot}、{@inheritDoc}、{@literal}、{@code} 几个不常用的标签,由于不常使用,我们不展开叙述,感兴趣的读者可以查看帮助文档。
*
*/
U2-基本程序设计
1-命名常量
关键字-final
常量命名后常量值不再改变
final datatype CONSTANTNAME = value;
2-命名习惯
- 变量和方法: 写字母命名,含多个单词则除首单词外其他单词首字母均大写.
- 类名: 每个单词的首字母大写. eg.ComputeArea
- 常量: 所有字母大写,两单词间用下划线连接. eg.MAX_VALUE
3-数值数据类型和操作
1.数值类型
| 类型名 | 范围 | 存储空间 |
|---|---|---|
| byte | -2^7 ~ 2^7-1 | 8位带符号数 |
| short | -2^15 ~ 2^15-1 | 16位带符号数 |
| int | -2^31 ~ 2^31 - 1 | 32位带符号数 |
| long | -2^63 ~ 2 ^ 63 - 1 | 64位带符号数 |
| float | ... | 32位标准IEEE754 |
| double | ... | 64位标准IEEE754 |
2.从键盘读取数值
eg.从键盘读取一个double类型的val
Scanner input = new Scanner(System.in);
double val = input.nextDouble();
System.out.println(val);
| 方法 | 描述 | 方法 | 描述 |
|---|---|---|---|
| nextByte() | 读取一个byte类型的整数 | nextLong() | 读取一个long类型整数 |
| nextShort() | 读取一个short类型整数 | nextFloat() | 读取一个float类型浮点数 |
| nextInt() | 读取一个int类型整数 | nextDouble() | 读取一个double类型浮点数 |
U3-选择
1.产生随机数
1.使用Math.random()
Math.random产生[0~1)之间的随机double值,据此可形成多种变换得到所需随机数.
eg.
double num = Math.random();
int a, b;
int val1 = (int)Math.random()*10; //获取[0~10)之间的随机整数
int val2 = a + (int)Math.random()*b; //获取[a~a+b)之间的随机整数
...
2.Random类
利用random类可生成随机boolean,int,long,float,double值
int,long范围为其数值范围(int可自我指定上界,此时范围为[0~bound) )
float,double范围为[0~1)
eg.
Random rand = new Random();//声明
boolean val1 = rand.nextBoolean();
...
2.switch语句
eg.
switch(status){
case 0: compute...;
break;
case 1: ...
break;
...
default: ...;//例外情况
}
status必须能计算处一个char/byte/short/int/String型值
3.操作符的优先级以及结合规则
- 后置操作符 eg.val++;
- 前置操作符 eg.++val;
- 类型转换(显式)
- 非运算 !
- / %
- 二元 + -
- 比较操作符 < <= ...
- 相等操作符 == !=
- 异或 ^
- 条件与 &&
- 条件或 ||
- 赋值操作符 = += *= ...
U4-数学函数,字符与字符串
1.各种数学函数:
//三角函数方法
double x = 0, y = 0;
double val = 0;
val = Math.sin(3.1415926544);//默认的sin,cos,tan都是以弧度进行计算的
val = Math.asin(1); //asin,acos,atan都是反三角函数
val = Math.toDegrees(3.14159265450959);//弧度转角度
val = Math.toRadians(180);//角度转弧度
System.out.println(val);
//指数方法
val = Math.exp(x); //求e的指数
val = Math.log(x); //求自然对数(e为底)
val = Math.log10(x); //求以10为底数
val = Math.pow(x, y); //求x^y
val = Math.sqrt(x); //求x的平方根
//取整方法
val = Math.ceil(x); //向上取整
val = Math.floor(x); //向下取整
val = Math.rint(x); //x取最接近其的整数,若距离相等则优先取偶数
val = Math.round(x); //等效于Math.floor(x+0.5)
//min,max,abs
//random方法
val = Math.random(); //返回[0,1)之间的一个随机double
int a = 0, b = 0;
int num = a + (int)Math.random() * b; //取[a,a+b)之间的一个随机整数
2. 字符与字符串
1.转义序列
一些常见的转义序列
| 转义序列 | 名称 | Unicode码 | 十进制值 |
|---|---|---|---|
| \b | 退格键 | \u0008 | 8 |
| \t | Tab键 | \u0009 | 9 |
| \n | 换行符 | \u000A | 10 |
| \f | 换页符 | \u000C | 12 |
| \r | 回车符 | \u000D | 13 |
| \ | 反斜杠 | \u005C | 92 |
| " | 引号 | \u0022 | 34 |
eg.打印He said "Java is fun"
System.out.println("He said \"Java is fun\"");
2.字符型数据与数值型数据之间的转换
1.基础转换:基于ascii码的转换
(1)数值->字符:整形转换只用到该数据的低16位,其余部分被忽略;浮点数转换时先转int(10),在转成char.
最终都根据ascii码找到对应的char值赋给字符
(2)字符->数值:
eg. A
int i = (char)'A';
//i = 65 (A的ascii码值)
注:若转化结果符合数值数据范围,可以隐式转换.否则必须显式转换
eg.\uFFF4为两个字节,不能隐式地用byte(一个字节的范围)来表示,故:
byte b = (byte)'\uFFF4';
2.字符的比较与测试
(1)比较:字符之间的比较是根据ascii值来进行比较的
(2)测试:Java提供Charact类进行字符测试,如下:
| 方法 | 描述 |
|---|---|
| isDigit(ch) | ch为数字则返回true |
| isLetter(ch) | ch为字母返回true |
| isLetterOrDigit(ch) | 字母/数字 |
| isLowerCase(ch) | 小写字母 |
| isUpperCase(ch) | 大写字母 |
| toLowerCase(ch) | 返回ch的小写形式 |
| toUpperCase(ch) | 返回ch的大写形式 |
3.String类型
eg.
String message = "Java";
(1)概述:String为Java库中的一个预定义的类,不是基本类型而是引用类型.
这里message是一个引用变量,引用一个呢欧容为Java的字符串对象.
(2)方法:
| 方法 | 描述 |
|---|---|
| length() | 返回字符串的字符数 |
| charAt(index) | 返回index处的字符 |
| concat(s1) | 将本字符串与s1拼接,返回拼接后的字符串 |
| toUpperCase() | 返回一个将本字符串所有字母大写的字符串 |
| toLowerCase() | ... |
| trim() | 返回将原字符串去掉两边空白字符的字符串 |
注:拼接也可简单地用+来实现
eg.
String s3 = s1 + s2; //等效于s1.concat(s2)
String my = message + " and " + "HTML";
(3)从控制台获取字符串:
eg.
Scanner input = new Scanner(System.in);
String s1 = input.next();
(4)字符串比较:
| 方法 | 描述 |
|---|---|
| equals(s1) | 若该字符串等于字符串s1,返回true |
| equalsIgnoreCase(s1) | 不区分大小写的比较 |
| compareTo(s1) | 返回一个>/=/<0的整数,表明该字符串是否>/</0的整数,表明该字符串是否>/=/< s1 |
| compareToIgnoreCase(s1) | 不区分大小写的比较 |
| startsWith(prefix) | 若字符串以prefix前缀开始返回true |
| endsWith(suffix) | 以suffix结束返回true |
| contains(s1) | 字符串包含s1返回true |
注:不可用==来比较两个字符串是否相等
==知识判断两个字符串是否指向同一个对象,而不是判断两个字符串的内容是否相等
(5)获取子串
| 方法 | 描述 |
|---|---|
| substring(beginIndex) | 返回从指定位置到结束的该字符串 |
| substring(beginIndex,endIndex) | 返回[begin,end)的子串 |
(6)获取字符串中的字符或子串
| 方法 | 描述 |
|---|---|
| indexOf(ch) | 返回字符串出现的第一个ch的下标,若无则返回-1 |
| indexOf(ch, fromIndex) | 返回从fronIndex开始第一个出现的ch的下标;-1 |
| indexOf(s) | 返回出现的第一个字符串s的下标;-1 |
| indexOf(s, fromIndex) | ... |
| lastIndexOf(ch) | 最后一个ch;-1 |
| lastIndexOf(ch, fromIndex) | 之前最后一个;-1 |
| lastIndexOf(s) | 字符串... |
| lastIndexOf(s, fromIndex) | ... |
(7)字符串和数字之间的转换
int intVal = Integer.parseInt(intString);//将intString转化为int类型
double doubleVal = Integer.parseDouble(doubleString);//...
String s = number + ""; //将number转化为字符串(只需用连接操作符)
3.格式化输出
(1)格式限定符:
| 限定符 | 输出 | eg |
|---|---|---|
| %b | 布尔值 | true |
| %c | 字符 | 'a' |
| %d | 十进制整数 | 23 |
| %f | 浮点数 | 43.22 |
| %e | 科学计数法型数 | 4.556000e+01 |
| %s | 字符串 | "Java" |
(2)限定宽度与精度:
| eg | 输出 |
|---|---|
| %5c | 输出字符并在字符前加4个空格 |
| %6b | 输出布尔值,false前加一个空格,true前加两个 |
| %5d | 若整数宽度小于5则在前追加空格,大于5则自动增加宽度 |
| %10.2f | 输出浮点数宽度至少为10,若小数点前数字小于7则前追加空格,大于则自动增加宽度(xxx.xx 3+1(.)+2) |
| %10.2e | ... |
| %12s | ... |
U5-循环
主要记录do-while(没怎么用过)
do-while
eg.
do{
...;
}while(...);
与while的差别主要在于:
do-while先执行一次循环再做鉴别;
while先鉴别再执行循环;
do-while;
Java语言程序与数据结构(基础篇)-随记的更多相关文章
- 夯实Java基础系列1:Java面向对象三大特性(基础篇)
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...
- Java从入门到精通——基础篇之JSTL标签
一.语言基础 EL(Expression Language)表达式,目的:为了使JSP写起来更加简单.提供了在 JSP 中简化表达式的方法. 二.分类 核心标签库:提供条件判断.属性访问.URL处理及 ...
- Java从入门到精通——基础篇之Servlet与JSP的区别
一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...
- C语言----输入输出语句(基础篇二)
今天整理一下自己的基础篇输入和输出的理解,自己没有研究系统输入和输出函数,以后有时间在去深究,之前在别人的博客里面看到这么一句话分享给大家,“学习就是一个不断抄袭,模仿,练习和创新的一个过程”. 使用 ...
- Java语言程序设计与数据结构(基础篇)第七章答案
答案为本人求解,如有错误,还望海涵.如有雷同,纯属巧合. 7.1 import java.util.Scanner; public class Main { public static void ma ...
- java语言程序设计与数据结构(基础篇)第四章答案
4.1 import java.util.Scanner; public class Welcome { public static void main(String[] args) { Scanne ...
- java语言程序设计与数据结构(基础篇)第二章答案
答案为本人自己求解,若有错误,还望海涵并及时告知.如有雷同,纯属巧合. 2.1 import java.util.Scanner; public class Welcome { public stat ...
- Java语言程序设计基础篇第10版第5章习题答案
5.1 1 public class Demo { public static void main(String[] args) { // 创建一个输入对象 java.util.Scanner inp ...
- R语言︱SNA-社会关系网络 R语言实现专题(基础篇)(一)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:这里所有的应用代码都来自与igrap ...
随机推荐
- python_request的安装及模拟json的post请求及带参数的get请求
一.Requests模块安装 安装方式一:执行 pip install -U requests 联网安装requests 安装方式二:进入https://pypi.org/project/reques ...
- 编译原理-非确定有穷自动机(nondeterministic finite automata,NFA)
是一个五元组,M=(S,∑,f,S0,F) S:有穷状态集 ∑:输入字母表(有穷) f:f(S,α)=S' 表示从一个状态S出发,识别了一个字α后,可以到达S'这个状态集合之间的某一个状态(可能的后继 ...
- JavaFx 创建快捷方式及设置开机启动
原文地址:JavaFx 创建快捷方式及设置开机启动 | Stars-One的杂货小窝 原本是想整个桌面启动器,需要在windows平台上实现开机启动,但我的软件都是jar文件,不是传统的exe文件,也 ...
- 深入理解java虚拟机笔记Chapter12
(本节笔记的线程收录在线程/并发相关的笔记中,未在此处提及) Java内存模型 Java 内存模型主要由以下三部分构成:1 个主内存.n 个线程.n 个工作内存(与线程一一对应) 主内存与工作内存 J ...
- ES6深拷贝与浅拷贝
今天小编和大家一起探讨js中深拷贝和浅拷贝,简单一点理解就是,对于引用数据类型,深拷贝是数据引用地址不同,在改变一个数据的时候,不会影响另一个数据.而浅拷贝刚好相反.两个数据引用的是同一个堆内存地址, ...
- 【NX二次开发】Block UI 超级截面
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- React开发中react-route-dom使用BrowserRouter部署到服务器上刷新时报404的问题
React项目部署中遇到的问题 react开发中react-route使用BrowserRoute路径在iis服务器上刷新时报404的问题 解决:在发布的项目根目录添加web.config配置文件 在 ...
- Django-Auth模块之auth_user表
一.Auth模块之auth_user表 在创建Django项目之后直接执行数据迁移命令会自动生成许多表. Django在启动之后就可以直接访问admin路由,需要输入用户名和密码,数据参考的就是aut ...
- Java进阶 | Proxy动态代理机制详解
一.Jvm加载对象 在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理: Java类即源代码程序.java类型文件,经过编译器编译之后就被转换成字节代码.c ...
- 通过AI识图判断图片是否为小票
先在百度智能云中创建一个应用加入以下标记功能(没有智能云账号可以去创建一个,创建应用也都是些基本操作) 本次只用到标记的功能. 此功能在图像识别下面. 创建应用后,页面会出现平台分配的密钥:API K ...