Java核心卷 感想总结+网易云音乐看到的一个bug

第三章主要是java的基本程序设计结构
要学会用java编写GUI应用程序

基础知识点:
命名规则:名字必须以字母开头,可大写可小写,不能用数字,当名字很长的时候采用骆驼命名法,每个单词的首字母大写。
每个Java应用程序都必须有一个main方法,main方法必须有一个外壳类,main方法是静态的。
点号(.)用于调用方法,通用语法是:object.menthod(parameters)
注释:有三种形式
单行注释://
多行注释😕* …*/
文档注释:/** */

数据类型:
int :4字节
long:8 … long d=8888L/l
byte:1
char:2
short:2
float:4 …float c=4.9F
double:8 … double a=2.0D/2.0d

进制:
二进制:1和0组成 0b/0B
八进制:前缀0
十进制:
十六进制:0x/0X
可以用十六进制表示浮点数值

用于表示溢出和出错情况的三个特殊的浮点数值:
正无穷大 Double.POSITIVE_INFINITY
负无穷大 Double.NEGATIVE_INFINITY
NaN(不是一个数字)Double.NaN

以及相应的float类型
一个正整数除以0的结果为无穷大
计算0/0或者负数的平方根结果是NaN.

浮点数被0除的结果是无穷大或NaN

NaN出现的情况:
网络问题,代码问题

曾经在网易云音乐看到过这个bug,排除代码问题,感觉应该不是网络问题,因为我换过其他网络,但是确实不知道是因为什么,我在翻评论的时候,一页一页的点击,到了50页就点击不了了,还剩下几百页,我从最后一页往前翻,翻着翻着出现了起码二十几页的NaN,完全莫得文字,只有NaN. 然后我换了手机看评论就莫得这个bug。

if(x==Double.NaN)//false
if(Double.NaN(x))//check whether x is “not a number”

char 类型

\b 退格
\t 制表
\n 换行
\r 回车
" 双引号
’ 单引号
\ 反斜杠

boolean类型
true false
在c++中,值0相当于布尔值false,非0值相当于true

变量初始化
常量:关键字final指示常量,只能被赋值一次,一旦被赋值之后,就不能再更改了。习惯上,常量名使用大写。

某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量
public static final double CM=2.54;
类变量的定义位于main方法的外部

第三章待续

运算符
跟小学的运算符含义差别不大,+,-,*,/,%(取余数)

可以将main方法标记为:
public static strictfp void main(String[] args)
但是这个类中的所有方法都要使用严格的浮点计算

数学函数与常量:

println方法处理System.out对象,Math类中的sqrt方法处理的不是对象,这样的方法称为静态方法

1.计算平方根:
Math.sqrt()方法
例如:double x=16;
double y=Math.sqrt(x);
System.out.println(y);

2.计算幂运算:
Math.pow()方法
double y=Math.pow(x,a);
pow方法有两个double类型的参数,其返回值也是double类型

Main类:
Main.sin
Main.cos
Main.tan
Main.atan
Main.atan2
Main.exp
Math.log
Main.log10
Main.PI
Main.E

不必在数学方法名和常量名前添加前缀“Math”,只要在源文件的顶部加上
import static java.lang.Math.*;

数值类型之间的转换:
小转大

强制类型转换:
double y=3.44;
int x=(int) y;
如果想对浮点数进入舍入运算,以便得到最接近的整数,需要使用Math,round方法
double x=9.97;
int x=(int) Math.round(x);
x=10
当调用round方法时,仍需要强制转换,因为round方法返回的结果是long类型,由于存在信息丢失的可能性,所以只能使用显式的强制转换才能将long类型转换成int类型

不要在boolean类型与任何数值类型之间进行强制类型转换,只有极少数的情况下才需要将布尔类型转换为数值类型,可以使用条件表达式b?1:0

如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换,如果x是一个int,则 x+=3.5是合法的,将把x设置为(int)(x+=3.5)

自增自减:

++i
结果再+1
i++
同理自减;

运算符:位运算符
< > <= >= ==
! && & | || ^ ~

三元操作符:
x<y?x:y

字符串:
子串:
String类的substring方法可以从一个比较大的字符串提取处一个子串。例如:
String greeting=“hello”;
String s=greeting.substring(0,3);
0到3所以是 hel,substring方法的第二个参数是不想复制的第一个位置

拼接:
+
如果需要把多个字符串放在一起,用一个定符界分隔,可以使用静态join方法
String all=String.join("/",“s”,“m”,“l”,“xl”);
all="s/m/l/xl"

不可变字符串:String类对象
greeting=greeting.substring(0,3)+“p!”
//help
当采用另一个字符串替换greeting的时候,java代码:
char*temp=malloc(6)
strncpy(temp,greeting,3)
strncpy(temp+3,“p!”,3);
greeting=temp;

检测字符串是否相等 (compareTo方法)
可以使用equals方法检测两个字符串是否相等
表达式:
s.equals(t)
“hello”.equals(“greeting”)
返回true或false
要想检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法
一定不要使用==运算符检测两个字符串是否相等

c程序员从不使用==对字符串进行比较,而使用strcmp函数

空串 :
“” 长度为0的字符串

if(str.length()==0)或
if(str.equals(""))

要检查一个字符串是否为null,
if(str==null)

有时要检查一个字符串既不是null也不为空串,
if(str!=null && str.length()!=0)
如果在一个null值上调用方法,会出现错误

码点与代码单元:
length方法将返回字符串所需要的代码单元数量
String greeting=“hello”;
int n=greeting.length();//5

要想得到实际长度,即码点数量,可以调用:
int cpCount=greeting.codePointCount(0,greeting.length());

调用s.charAt(n)将返回位置n的代码单元,n介于0~s.length()-1之间
char first=greeting.charAt(0);//h
char last=greeting.charAt(4);//l

要想得到第i个码点:
int index=greeting.offsetByCodePoints(0,i);
int cp=greeting.codePointAt(index);

codePoints方法:
生成一个int值的“流” 每个Int值对应一个码点
int[] codePoints=str.codePoints().toArray();
如果要把一个码点数组转换为一个字符串,可以使用构造函数
String str=new String(codePoints,0,codePoints.length)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值