Java白皮书学习笔记--用于自我复习 基础知识篇

     本笔记是摘与Hava白皮书上面的内容,用来给自己做提醒的,因此大概并不适合Java的学习者作为笔记参考使用。

 

 

以我的水平现在还看不懂这个。。。

 

一。基础知识篇

1.常量

final关键字指示常量,只能够被赋值一次。习惯上,常量名使用全大写。

final double n=10;

 

1.1 类常量

在Java中,希望某个常量可以在一个类的多个方法中使用。可以使用关键字static final设置一个类常量。

例如:

public cl ass Constants〗
{
public static final double CM_PER_INCH = 2.54;//定义在main方法外部
public static void main(Stringn args)
{
double paperWidth = 8.5;
double paperHeight = 11;
System.out.println("Paper size in centimeters: "
+ paperWidth * CMJERJNCH + by " + paperHeight * CM_PER_INCH) ;
}
}

  

 1.2.数学函数与常量

1.2.1 计算平方根  Math.squart(x)

1.2.2  在Java 中,没有幂运算, 因此需要借助于Math 类的pow 方法。语句:

double y = Math.pow(x, a) ;
将y 的值设置为x 的a 次幂( xa)。pow 方法有两个double 类型的参数, 其返回结果也为
double 类型。

1.2.3  

Math 类提供了一些常用的三角函数:
Math,sin
Math.cos
Math.tan
Math.atan
Math.atan2
还有指数函数以及它的反函数—自然对数以及以10 为底的对数:
Math.exp
Math.log
Math.loglO
最后,Java 还提供了两个用于表示TC 和e 常量的近似值:
Math.PI
Math.E

 

 

 

 

1.3.1数值类型之间的转换

 

虚箭头会丢失精度

 

 

1.3.2   强制类型转换

强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变
量名。例如:

1 double x * 9.997;
2 int nx = (int) x;


这样, 变量nx 的值为9。强制类型转换通过截断小数部分将浮点值转换为整型。
如果想对浮点数进行舍人运算, 以便得到最接近的整数(在很多情况下, 这种操作更有
用),
那就需要使用Math_round 方法:

double x z 9.997;
int nx = (int) Math.round(x);

  

现在, 变量nx 的值为10。当调用round 的时候, 仍然需要使用强制类型转换( int)。其原因
是round 方法返回的结果为long 类型,由于存在信息丢失的可能性, 所以只有使用显式的强
制类型转换才能够将long 类型转换成int 类型。

 

1.3.3

 

 

 

1.3.4   枚举类型

枚举类型包括有限个命名的值。

有关枚举类型的详细内容将在第五章中介绍。

 

 

二、字符串

String

 

2.1  子串

String类的substring方法可以从一个较大的字符串中提取出一个子串。

例如:

String greeting = "Hello";
String s = greeting.substring(0,3)


创建了一个由字符“ Hel” 组成的字符串。
substring 方法的第二个参数是不想复制的第一个位置。这里要复制位置为0、1 和2 ( 从
0 到2, 包括0 和2 ) 的字符。在substring 中从0 开始计数,直到3 为止, 但不包含3。

 

2.2 拼接

Java中的String类允许使用 + 号拼接两个字符串。

这种特性通常用在输出语句中。

如果需要把多个字符串放在一起, 用一个定界符分隔,可以使用静态join 方法:

String all = String.join(" ~ ", "S", "M", "L", "XL");
// all is the string "S ~ H ~ L ~ XL"

 

2.3 不可变字符串

String 类没有提供用于修改字符串的方法6 如果希望将greeting 的内容修改为“ Help!”,
不能直接地将greeting的最后两个位置的字符修改为‘ p ’ 和‘、! 这对于C程序员来说,
将会感到无从下手。如何修改这个字符串呢?

在Java 中实现这项操作非常容易。首先提取需
要的字符, 然后再拼接上替换的字符串:
greeting = greeting.substring(0, 3) + "p!";
上面这条语句将greeting 当前值修改为“ Help ! ”

 由于不能修改Java 字符串中的字符, 所以在Java 文档中将String 类对象称为不可变字

符串, 如同数字3 永远是数字3—样,字符串“ Hello” 永远包含字符H、e、1、1 和o 的代
码单元序列, 而不能修改其中的任何一个字符。当然, 可以修改字符串变量greeting, 让它
引用另外一个字符串, 这就如同可以将存放3 的数值变量改成存放4 一样

 

2.4 检测字符串是否相等

可以使用equals 方法检测两个字符串是否相等。对于表达式:
s.equal s(t)
如果字符串s 与字符串t 相等, 则返回true ; 否则, 返回false。需要注意,s 与t 可以是字符
串变量, 也可以是字符串字面量。例如, 下列表达式是合法的:
"Hello".equals(greeting)
要想检测两个字符串是否相等,而不区分大小写, 可以使用equalsIgnoreCase 方法。
"Hello".equalsIgnoreCase("hel1o")
一定不要使用=运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串
是否放置在同一个位置上。

 

2.5  空串与null串

空串"" 是长度为0 的字符串。可以调用以下代码检查一个字符串是否为空:
if (str.length() = 0)

if (str.equals(""))
空串是一个Java 对象, 有自己的串长度( 0 ) 和内容(空)。不过, String 变量还可以存
放一个特殊的值, 名为null , 这表示目前没有任何对象与该变量关联(关于null 的更多信息
请参见第4 章)。要检查一个字符串是否为null , 要使用以下条件:
if (str == null)

 

2.6 码点和代码单元

待补充知识空缺。可以单独开一个随笔说。

好像大体是说,代码单元可能不准确,而码点比较准确。

 

 

3.Java中如果整数和浮点数的精度不够使,那么可以使用java.math包中的两个很有用的类:BigInteger计二BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现了人已经度的整数运算,BigDecimal实现任意精度的浮点数运算。

    BigInteger a = BigInteger.valueOf(100);//value of方法将100转换成大数
    BigInteger b = BigInteger.valueOf(10); 
    BigInteger c = a.add(b);//加法
    System.out.println(c);
    BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));//乘法
    System.out.println(d);

 

剩下的用法可以查找Java的API文档。

 

4.数组

4.1 数组的声明和初始化

    int[] aa;//声明了变量a  但并没有将a初始化为一个真正的数组
    aa=new int[100];//初始化了
int[] hh=new int[10];

并且,数组的长度并不要求是常量。可以创建new int[ n ]  其中n为变量。

创建一个数字数组时, 所有元素都初始化为0。boolean 数组的元素会初始化为false   对
象数组的元素则初始化为一个特殊值null , 这表示这些元素(还)未存放任何对象。初学者
对此可能有些不解。例如,
String[]  names = new String[10] ;
会创建一个包含10 个字符串的数组, 所有字符串都为null。如果希望这个数组包含空
串, 可以为元素指定空串:就是遍历一遍,每个赋值为一个空格。

 

要想获得数组中的元素个数,可以使用array.length,例如:

 

 

 

4.2  for each 循环

    int[] aa;//
    aa=new int[100];
    for(int i=0;i<aa.length;i++)
        aa[i]=i+1;
    
    for(int element :aa)
        System.out.println(element);//这个就是for each循环

这个循环读作“循环a中的每一个元素”。打印的每一个元素都占一行。当然传统的for循环也是可以得到结果的,但是这个for each循环语句显得更加简洁、不宜出错。(不必为下表的起始值和中止值操心)。

    int[] aa;//
    aa=new int[100];
    for(int i=0;i<aa.length;i++)
        aa[i]=i+1;
    
    //Arrays.toString(aa);
    System.out.println(Arrays.toString(aa));

 4.3 数组初始化以及匿名数组

    int[] a= {1,2,3,4,5,5,5,5,5};//允许不初始化长度
    for(int e :a)
        System.out.println(e);
    System.out.println("after:");
    a=new int[] {1,1,1,1,1,1,1};//等于号后面这个叫做匿名数组
    for(int e: a)
        System.out.println(e);

 

在这里,只要暂且记住这个用法就可以了。在后面应该才会得到应用。现在还不是特别懂。

 

4.4数组的拷贝:

    int[] a= {1,2,3,4,5,5,5,5,5};
    
    int[] b= {2,2,2,2,2,2,2};
    System.out.println(a);
    System.out.println(b);
    
    System.out.println();
    
    a=b;//这样是允许的 但是打印的地址说明,这样只是把a和b指向的地址统一了而已,实际上还是指向同一个数组
    System.out.println(a);
    System.out.println(b);

想要拷贝数组,也就是两个数组指向两个地址的,那么用这个:

int[] aa=Arrays.copyOf(a,a.length);

第二个参数是新数组的长度,通常用来增加数组的大小:

int[] aa=Arrays.copyOf(a,2*a.length);

上面的这句,如果数组元素是数值型,那么多余的元素将被赋值为0;若是布尔型,将被赋值为false.....

 

 

 

Java与c++的不同之处见上图

 

4.5

 

 

 

转载于:https://www.cnblogs.com/juzijuziju/p/11577504.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值