java笔记

System.out 是 PrintStream类的实例,该类有println,print等实例;








Java中随机数的产生:
1. 常用的方法是使用java.util中的Random类,如
new Random.nextInt();
new Random.nextDouble();等


2. 可以使用时间对某个数的模来生成随机数,System.currentTimeMillis()返回1970年1月1日到当前时间的时间差,以秒为单位:
long currentTime = System.CurrentTimeMillis();
long rand = currentTime/someDigt;








Java基本类型:
4种整形,byte(1个字节),short(2个字节),int(4个字节),long(8个字节)
2种浮点型:float(4个字节,6到7位有效数字),double(8个字节,15位有效数字)
1种布尔型:boolean
1种字符型:char


在Java种整形的范围不依赖于程序运行的机器,其中八进制以0x为前缀,二进制以0b为前缀八进制以0为前缀;


数字可以添加下划线以利于阅读:如:private static final int LIMIT = 10_000_000L;


在Double类中有一些常量:Double.POSITIVE_INFINITY,Double.NEGATIME_INFINITITY等








变量的初始化:
在使用变量前必须进行初始化,尽可能晚的声明变量是好的习惯;


常量一般全部大写,名称简洁易懂,见文知义,英文单词间用下划线隔开;








java类型转换:
如果没有精度丢失,转换总是合法的,如从byte到short,int,long,double;
从short到char,int,long,double
从int到long,double 








java中的捷径评估:
当&&操作符左侧表达式返回值为真时就不评估第二个表达式,如:if(n != 0 && (100 - s) / n > t) 








如果基本类型不能满足计算需求,Java中还有BigInteger类和BigDicimal类可以提供精确计算;
例如计算 r = 5 * (n + k);
BigInteger r = BigInteger.valueOf(5).multiply(n.add(k));








在Java中字符串可以包含任何Unicode字符;
String类中常用的方法:
String.join(str1, str2); 拼接字符串
String.substring(start, end);
String.split(regex); 分割字符串
String.equals(targetStr);  分割字符串,返回一个数组


字符串与数字的转换:
将整数转换成字符串,可调用Integer.toString()方法,该方法可加基数,基数范围2-36,如Integer.toString(3, 2); //结果为11


将字符串转成整数可用Integer.parstInt(str)方法,该方法也可以指定基数;


String类的常用方法汇总:
boolean startWith(String str);
boolean endWith(String str);
boolean contains(String str);
int indexOf(String str);
int lastIndexOf(String str);
int indexof(String str, int fromIndex);
int lastIndexOf(String str,int fromIndex)
String replace(ChatSequence oldString, CharSequence newString);
String toUpperCase();
String toLowerCase();
String trim();








在构造函数中调用另一个构造函数,如存在一个构造函数,People(String name,int age)
public People(int age) {
this("", age);
}
这里的this不是正在被构造的对象,是一种特殊语法,只用在同类的另一个构造函数调用中。










以final修饰实例变量时,必须在所有的构造函数末尾初始化,之后这个变量不会被修改。
当使用可修改对象的引用时,final只是声明该引用永不改变,但是修改该对象本身是可以的,如:
public class Person {
private final ArrayList<People> friends = new ArrayList<>();
//可以给list添加元素
...
}








public class RandomNumbers  {
private static Random gengerator = new Random();


public static int nextInt(int low, int high) {
return low + gengerator.nextInt(high - low + 1);
}
}








内部类和静态内部类的区别:
如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着: 
1. 嵌套类的对象,并不需要其外围类的对象。 
2. 不能从嵌套类的对象中访问非静态的外围类对象。 
一 . 静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 
二 . 静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;
三 . 非静态内部类的非静态成员可以访问外部类的非静态变量。








定义在接口中的任何变量自动为public statc final








每个枚举类型都有固定的实例集,因此对于枚举类型的值直接用 == 比较。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值