给大忙人看的java_给大忙人看的Java核心技术笔记(1、基本的编程结构)

1、基本数据类型

整型:int(+-20亿),long,short,byte(-128~127)

Integer.MIN_VALUE,Integer.MAX_VALUE

如果long不够用可以用BigInteger

在Java中,整型的范围不依赖于程序所运行的机器。

可以给数字添加下划线使得阅读更容易,如:

int A = 100_000;

浮点类型:

现在浮点类型默认使用double,float类型有个F后缀(3.14F)。没有F后缀的浮点类型默认为double,可以使用D为后缀(3.14D)

Double.POSITIVE_INFINITY代表正无穷,Double.NEGATIVE_INFINITY代表负无穷,Double.NaN代表“非数值”。比如1.0/0.0,0.0/0.0,负数的平方根=NaN。

浮点数不适合做金融计算,会有舍入误差。

2.0-1.1 = 0.899999999999;1/10没有精确的二进制表示。应该使用BigDecimal!

char型

4A表示Unicode字符U+004A 拉丁字符J,可以写成\u004A(使用\u前缀)

\n,\r,\t,\b代表换行、回车、tab、退格。

在不同系统下换行符不同,window下是/r/n。Linux下是/n。可以使用

1 //从当前系统中获取换行符,默认是"\n"

2 String lineSeparator = System.getProperty("line.separator", "\n");3

4 String[] arr = fileContet.splite(lineSeparator );

布尔型

在Java中布尔型不是数字类型。布尔型与整数0和1没有关系。

2、变量

名称

变量名中符号$是专门用在自动产生的名称中,不应使用。大小写敏感,名称不能使用空格或者符号,也不能使用关键字。

尽量晚的声明变量

3、常量

关键字final表示一个值,一旦赋值就不能改变。根据习惯常量的名称使用大写字母。也可以在方法外,使用static关键字声明常量。

1   public static final int DAYS_PER_WEEK=7;//直接写在类中

2

3   final int DAYS_PER_WEEK=7;//写在类的方法里面

final变量可以延迟初始化。只要在首次使用前被初始化即可。

1 final intDAYS_IN_FEBRUARY;2 if(leapYear){3 DAYS_IN_FEBRUARY = 29;4 }else{5 DAYS_IN_FEBRUARY = 28;6 }

基本运算:17/5 = 3   ,    17.0/5 = 3.4.

整数除以0会抛异常,浮点数除以0返回无限值或NaN

在使用%运算的时候要注意负数的处理:

一般。避免负数用(((position+adjustment)%12)+12)%12保证结果为0~11之间的数。

【java有strictfp修饰符,保证所有浮点运算都是严格可移植的,现代处理器有的使用了超过64bit的浮点寄存器,增加速度,减少溢出风险。】

数学方法:p15

字符串比较:

用string.equals。

在java虚拟机中,每个文字串只有一个实例,因此“world” == “world”,若是字符串是计算的来的,一定不是一个对象。

比较字符串和文字串时,将文字串放在前面,防止空指针异常

if(“world”.equals(location)|| null == location)

String API:

在java中,String类是不可变的(immutable)。任何String方法都不能修改自己的字符串。会返回修改后的另一个对象!

编码点和编码单元(Unicode)

每个有效的Unicode值称为编码点。str.codePointAt(str.offsetByCodePoints(0,i));P26

读取输入

Scanner in = newScanner(System.in);

System.out.println("Input name :");//读一行

String name =in.nextLine();//读一个单词,空格分隔

String name =in.next();//读整数

if(in.hasNextInt()){int age =in.nextInt();

}//读取密码不用Scanner类,可以用Console类

Console terminal =System.console();

String userNm= terminal.readLine("User name: ");char[] pwd =terminal.readPassword(Password: );//密码用char[]比String安全,用完后可以重写char[]!!!!!

//让System.in和System.out分别从input.txt读写入output.txt中

java mypackage.MainClassoutput.txt

格式化输出

System.out.printf()

%f,%s,%d分别为float,string,int.  P29表1-5

String.formate  P30表1-6 格式化输出的标记符

+  为正数和负数打印符号

-  左对齐

,  进行分组999,999

#  加0x前缀

控制流

switch:

记得在选择分支末尾添加break,否则全部执行。

循环:

//跳出多层循环

outer:while(true){

...while(true){

...if(true){breakouter;

...

}

}

}//outer是break的标签,可以是任何名字。

数组

当使用new构造数组时:

数字类型(包括char)的数组用0填充。

Boolean类型的数组用false填充。

对象数组用空引用填充。

※泛型类不能使用基本类型作为类型参数。ArrayList是非法的!

每一种基本类型,都有对应的包装类:Integer、Byte、Short、Long、Character、Float、Double、Boolean。

自动装箱:基本类型和他们对应的包装类型之间的转换时自动的。

自动拆箱:

数组和数组列表的复制

将数组变量复制到另外一个数组变量,两个变量引用同一个数组。用静态方法Array.copyOf();

1 int[] copiedPrimes = Arrays.copyOf(primes,primes.length);

1 //复制数组列表

2 ArrayList copiedFriends = new ArrayList<>(friends);3 String[] names =...;4 ArrayList friends = new ArrayList<>(Arrays.asList(names));

数组的排序

Array.sort(names);//数组排序

Collections.sort(friends);//数组列表排序

对于数组可以用parallelSort方法,分布到多个处理器进行处理。

※可变参数必须是方法的最后一个参数。

public static double max(double first,double... rest);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值