0%

Java/Java学习记录1

Java学习记录

用于记录那些零星的不成系统的需要注意的问题

next()和nextLine()的区别

next()特点:
1、一定要读取到有效字符后才可以结束输入,
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉,
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符.
next()不能得到带有空格的字符串

nextLine()特点:
1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白.

Java中字符串可以像整数一样交换顺序

为什么Math.sin(Math.PI)为什么不等于0?

解释:
1.常规代数里,是等于0,但是cpu运算的时候,只是近似等于0
2.计算机语言数值型数据都是二进制表达的,所以在进行浮点计算时候是很难精确的,Math.sin(Math.PI)是通过微积分计算公式计算出来的,会存在精度上面的误差结果是:1.2246063538223772e-16

综上,浮点数的运算,往往并不是我们期望的结果,可以通过Math.round() 函数来解决。

常见计算结果类型

Math,pow计算结果是小数
Math.log计算结果也是小数

如何利用Math.random生成各个范围的整数

* 以下这是阿里巴巴编码规范插件的提示 *
** 注意 Math.random() 这个方法返回是double类型,注意取值的范围[0,1)(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将x放大10的若干倍然后取整,直接使用Random对象的nextInt或者nextLong方法. **

Unicode的问题

小技巧可以这样输出一个双引号:

System.out.println(‘“‘); // prints “

字符串操作之:concat用于java中字符串的拼接。

1
2
3
4
5
6
7
String s1 = 'Hello';

String s2 = " World!"

String s3 = s1.concat.(s2);
System.out.println(s3);
// Output:Hello world

记录怎样实现字符串的强制转换

Java中使用数组之前必须先定义和声明,不能不经过声明和定义就直接在方法中作为参数调用方法。

注意,在Java中只能有一个主类,它的名字和文件名相同,其他的类一定不能使用这个名字。

有关Unicode的问题

每个字符都有一个唯一的在十六进制数0到FFFF(即十进制的65535)之间的Unicode。分别用’\u0000’ 和 ‘\uFFFF’表示。

匿名数组——没有显式地引用变量。常用于给方法传递参数

printArray(new int[]{1, 3, 3})

调用方法时参数的传递:

  • 对于基本数据类型参数,传递的是实参的值

  • 对于数组类型参数,参数值是数组的引用,给方法传递的是这个引用。
    更好的说法是参数传递的是共享信息(pass-by-sharing)。即方法中的数组和传递的数组是一样的。所以,如果改变方法中的数组,将会看到方法外的数组也变化了。

  • 注意下列的区别:

    对于以上区别,可以将方法添加一个返回值,然后在mian方法中直接print方法调用,可以获得变量的改变。

可变长参数列表

-w736

需要注意的是:

  • 只允许使用一个可变长度参数。
  • 可变长度参数仅被允许放置在参数列表的最后。
  • 不允许从方法中返回可变长度类型。

java.util.Arrays.sort:

java.util.Arrays.sort方法已重载,因此可以用于对除布尔值以外的任何原始类型的数组进行排序。这种排序方法不会创建新方法,元素将被排序到作为方法参数给出的数组中。

java.util.Arrays.toString

返回对象的字符串表示

java.util.Arrays.fill

填充数组

System.currentTimeMillis

用于获取当前已经经过了多少毫秒(开始时间是“那个”时间,大家都知道吧)

Random类基本用法

// 创建一个实例对象
Random random = new Random(1000);其中1000是seed,这个值最好是随机使得获取的伪随机数更加随机
int number = random.nextInt(1000); 其中的1000是bound,使用该语句可以获得一个在从零到bound(不包括)之间的伪随机数。

关于boolean类型

在java中boolean类型默认为false。
即如果不给定是true还是false,boolean类型变量的默认值是false。

判断字符是否是数字

使用:
Character.isDigit()

注意:只能判断单个字符,不能判断字符串,但是可以通过循环实现判断字符串是不是数字。

将字符串转换为大写

str.toUpperCase();

String-w947

如果查找的是字符串,返回的int值是字符串中第一个字符的索引
-w948

获取伪随机数

-w490

使用int强制转换char得到的是ascii码,即

(int)StringName.charAt(i)是行不通的。

二进制转十进制算法

-w1173

关于try-catch嵌套

-w714

十进制转二进制

-w574

一个关于try-catch嵌套的例子

``
public class Content0804 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print(“请输入一个整数: “);
while (true){
String line = in.nextLine();
try {
int num = Integer.parseInt(line);
System.out.println(Integer.toBinaryString(num));
break;
}catch (Exception e){
try {
new BigInteger(line);
System.out.println(“整数过大,请输入一个整数”);
}catch (Exception e1){
try {
new BigDecimal(line);
System.out.println(“输入的是一个小数,请输入一个整数”);
}catch (Exception e2){
System.out.println(“输入的是非法字符,请重新输入一个整数‚”);
}
}
}
}
}
}

``

如何同入理解API

https://www.zhihu.com/question/21430743

java jdk源码

https://gitee.com/huangtianyu/jdk-source

string.getBytes()

void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
已过时。 该方法无法将字符正确转换为字节。从 JDK 1.1 起,完成该转换的首选方法是通过 getBytes() 方法,该方法使用平台的默认字符集。

System.getProperty()

这个函数可以获取到java JVM以及操作系统的一些参数

-w870

Interger类

-w860
-w559
##Interger.parseInt(String s, int radix)
-w710
意思是前一个字符形式的数字是后面这个radix进制的,然后输出的时候自动将这个radix进制的s数字转换为十进制的

关于StringBuilder

s1.substring(2)中给定的是start的下标,这种情况下默认为从开始值到最后的下标

关于protected和private的简单说明

-w643

即:
默认情况下,一个类可以访问同一个包中的,而外部的类无法访问它。

protected使其他包中的类无法访问该类,但是其他包中他的子类可以访问它。而同一个包中可以随意访问

private表示只有在该类中才能使用

Number

Number的compareTo(Integer)方法未定义

关于接口和抽象类的一些知识

接口中定义的方法都是公共的

##输出圆周率的方法

表示如下:

1
"\u03c0"

浅拷贝

浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。 如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。