java本周知识点总结
由于还在学习markdown语法,所以里面会包含相关的笔记。
以下按不同程序分类:
出租车计费
1.常量定义方式:
常量名注意命名规范:多个单词用下划线隔开,所有单词字母大写,要求见名知意;
其中上面一行的缩进来源于两个  
还可以用来缩进方法有3个:
1.使用特殊占位符:依据所占据空格大小由大到小排序:
 / >  / > / >  
2.使用<br />标签;
2.在行尾敲击两个以上空格,然后回车;另:退出当前层引用,需要有当前层引用的退出。详见参考文档4.
参考文档:
1.缩进和换行部分
2.占据空格大小关系
3.字体颜色更改
4.引用问题
5.其他
public static final 数据类型 常量名 = 数值;
//例如:
public static final int BASIC_PRICE = 2;
2.关于一组数学函数:
Math.ceil(double a);//向上取整
Math.floor(double b);//向下取整
Math.Round(double c);//四舍五入
3.日期格式转换
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//上面构造函数参数为指定的格式,如: HH:mm ,也可以只有时间,不包含日期
String date = “2021-01-17 14:19:52”;
int day = format.parse(date).getDate();//返回值为整形,对应上述代码1;此种方式不建议使用,后续可能不再支持,考虑Calendar类
long time = format.parse(date).getTime();//返回一个长整型的时间戳
4.注意三目运算符的使用,如果满足if-else的情况,可以考虑使用。
人工智障
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String question;
while(true) {
question = sc.next();
//!!!!!注意这里的替换是只要符合全部替换!!!!
question = question.replace("吗", "");//替换指定字符串中的特定内容
question = question.replace("?", "!");
question = question.replace("我", "我也");
System.out.println(question);
}
}
计算某一年某月的天数
注意闰年判断条件、以及三目运算符的使用。
package chap2;
import java.util.Scanner;
public class CalDay {
/**
* 计算任意年份天数
* author:黄浩
* time:2021年1月16日22:26:36
* @param args
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("计算输入年月的天数程序");
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; //是否闰年
int days = isLeapYear?29:28;//依据是否闰年选择对应天数
String yearName =isLeapYear ? "闰年":"平年";//依据是否闰年选择对应名称
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:System.out.println(year+"年("+yearName+")"+month+"月是大月,有31天");break;//已上都是大月
case 4:
case 6:
case 9:
case 11:System.out.println(year+"年("+yearName+")"+month+"月是小月,有30天");break;
case 2:System.out.println(year+"年("+yearName+")"+month+"月,有"+days+"天");break;//依据上述变量选择的值
}
}
}
指定图形输出(部分):
package chap2;
public class Figure {
/**
* 输出指定图形(循环练习)
* author:黄浩
* time:2021年1月16日22:27:07
* @param args
*/
public static void main(String[] args) {
// *
// ***
// *****
// *******
for(int i = 0;i < 4;i++) {
for(int j = 0;j < 2*i+1;j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("------------我是可爱的分割线------------------");
// * 空格也是一种符号
// ***
// *****
// *******
for(int i = 0;i < 4;i++) {//控制行数
for(int j = i+1;j < 4;j++) {//每一行的空格数量
System.out.print(" ");
}
for(int j = 0; j<2*i+1;j++) {//每一行的星号数量
System.out.print("*");
}
System.out.println();//一行结束
}
System.out.println("------------我是可爱的分割线------------------");
// *
// ***
// *****
// *******
// *****
// ***
// *
int row = 7;//总行数
int maxRow = (row+1)/2;//正三角的最大行数 公式=(总行数+1)/2
//上三角
for(int i = 0; i <maxRow; i++ ) {//上三角形的行数
//每行开始
for(int j = i+1;j < maxRow;j++) {//上三角的空格数 (依照视频里的关系:上三角当前行空格数=上三角总行数-(当前所在行+1))
System.out.print(" ");
}
for(int j = 0;j < 2*i+1;j++) {//星号个数=2*当前行+1
System.out.print("*");
}
//每行结束
System.out.println();//行尾换行
}
//下三角
for(int i = row-maxRow; i > 0;i-- ) {//减去上三角行数即为下三角行数
//每行开始
for(int j = 0;j <= maxRow-i-1;j++) {//每行空格数量=最大行号-当前行号,由于j初值为0,再减一
System.out.print(" ");
}
for(int j = 0; j <= 2*(i-1); j++) {//每行星号数量=2*当前行号-1,
//表达式为(2*i-1)-1
//第一个括号内为公式,由于j初值为0,还需再减一,提取公因式即为2*(i-1)
System.out.print("*");
}
//每行结束
System.out.println();//行尾换行
}
System.out.println("------------我是可爱的分割线------------------");
// 空格 星 空格 星
// * 3 1
// * * 2 1 1 1
// * * 0 1 3 5 7 9 11 13
// * * 1 2 3 4 5 6 7 8
// * * -1 -1 0 1 2 3
// * *
// *
for(int i = 1; i <= maxRow;i++) {
for(int j = 1; j <=maxRow-i;j++) {
System.out.print(" ");
}
System.out.print("*");
switch(i) {
case 1: break;
case 2: System.out.print(" ");break;
default : {
for(int k = 1; k <= i*2-3; k++) {
System.out.print(" ");
}
}
}
if( i > 1 ) {
System.out.print("*");
}
System.out.println();
}
//下三角
for(int i = row-maxRow; i > 0 ; i--) {
for(int j = 0; j < maxRow-i; j++) {
System.out.print(" ");
}
System.out.print("*");
switch(i) {
case 1: break;
case 2: System.out.print(" ");break;
default : {
for(int k = 1; k <= i*2-3; k++) {
System.out.print(" ");
}
}
}
if( i > 1 ) {
System.out.print("*");
}
System.out.println();
}
}
}
效果图:
水仙花数(NarcissisticNumber/Pluperfect digital invariant/PPDI)
这里注意的就是立方有对应的数学函数
Math.pow(double a,double b);//a表示底数,b表示次幂
翻阅源码又发现底层用了strictfp关键字,即FP-strict,精确浮点数。他可以用来声明一个类,接口和方法,使之符合浮点规范[IEEE-754]。可以使计算结果不会随不同硬件平台运行导致结果不一致。 特 别 的 ‾ \underline{特别的} 特别的,如果一个类被strictfp关键字修饰,那么其中所有的方法必须都是strictfp的。剩下实现没有关注,有点复杂,之后看完了,再更新。
九九乘法表
贴上代码先:
package chap2;
public class TimesTable {
/**
* 九九乘法表
* author:黄浩
* time:2021年1月16日22:32:45
* @param args
*/
public static void main(String[] args) {
for(int i = 1;i <= 9;i++) {//行数
for(int j = 1; j <= i;j++) {//每行的列数
System.out.print("\t"+j+"*"+i+"="+i*j);//显示格式有问题,但是在dos窗口下正常
}
System.out.println();
}
}
}
运行截图:
这里有对齐问题,eclipse中打印不一致,但我检查没有逻辑问题,于是我用dos窗口打印,结果发现并没有问题,我也不清楚具体什么情况,希望有知道的人指点下呗。
eclipse:(该问题已解决,是控制台字体的锅,我用的是方正静蕾简体,换成其他的输出正常,我居然没想到!)
dos:
最后关于使用eclipse时快捷键相关问题
代码提示
参考这篇文档
需要注意的是快捷键之间的冲突问题即可。
就到这里了,下次见。
sue
2021年1月17日15:08:48