zoukankan      html  css  js  c++  java
  • Java基本程序设计结构(基础知识1)

    《Java核心技术卷一:基础知识》

    第三章知识点汇总

    1.Java区分大小写。

    2.Java全部内容必须放置在类中。

    3.

    4.空白符会被编译器忽略。

    5.注释注意/*  */不能嵌套使用,因为在代码中可能包含一个*/  后面就会变为非注释。

    6.Java强类型语言:每个变量必须声明一种类型。

    7.

    8.整数类型负数都要比正数多表示一位的原因:

    “为什么是-(2^31)而不是-(2^31 -1)”,是因为计算机是用补码的形式来表示一个数。为了方便,以8位机举例(32位同理),原码的表示范围是-(2^7-1) ~ (2^7-1),即-127~127,而补码的范围是-(2^7) ~ (2^7-1),即-128~127,这是因为原码表示时,对于0有2种表示,分别是10000000和00000000,因为+0和-0都是0;而补码表示时,10000000表示的是-128【-128=-1 +(-127)=(10000001)原 + (11111111)原=(11111111)补 + (10000001)补 = (10000000)补】,所以补码可以比原码多表示一个比原最小值小1的数,同理,32位机也是如此,所以范围是-(2^31)~ (2^31 -1)

    有原码求补码的方法:

    符号位不变 ,将除符号位之外取反,在最后一位+1进行运算

    9.很少情况下使用单精度float 多数是双精度double 如果只说是3.14 则默认是double类型的。

    10.由于二进制计算 计算机计算2.0-1.1会返回0.8999999 精确计算需要用到BigDecimal大数类。

    11.注意u 小心在你不知道的情况下转义

    12.从JDK10 开始 可以使用var 无需指定变量类型。

    13.final常量 static final类常量

    14.实线为数据类型转换时不会因起精度丢失

    虚线会引起精度丢失

     15.使用强制类型转换会将9.99(double)转化为9(int)

    想要四舍五入要用Math.round()方法。

    16.如果超出所转类型范围 会得到不同的数。

    17.&& ||是短路运算符 ||来说前面的对了就为真了 &&来说前面错了就为错了

    18.位运算符(永远的痛):&  | ^ ~   << >>

    19.字符串拼接:+号 Java任何对象都能转换成字符串。

    20.JDK11提供repeat方法  s.repeat(3) 将s重复三次

    21.一定一定一定不要用==来判等字符串!!!

    22.需要经常拼接字符串需要用StringBuilder,用String和+的话,每次都要新建对象,浪费时间和空间。

    23.JDK5引入StringBuilder ,前身是StringBuffer

    24.Scanner对象可以输入

    Scanner in=new Scanner(System.in);
    String s=in.nextLine();

    25. 想要格式化输出可以用printf

    %s 字符串

    %f 浮点格式(也就是我们概念中的float或者double)

    %b 相对应的参数中包含转义字符时,可以使用此替换符进行替换,对应的转义字符会被转义。

    %c ASCII字符。显示相对应参数的第一个字符

    %d, %i 十进制整数

    %o 不带正负号的八进制值

    %u 不带正负号的十进制值

    %x 不带正负号的十六进制值,使用a至f表示10至15

    %X 不带正负号的十六进制值,使用A至F表示10至15

    %% 表示"%"本身

     26.任意精度的整型计算BigInteger 用valueOf()方法可以将int转化为BigInteger

    任意精度的浮点数计算BigDemical

    不能使用运算符 只能用add、subtract、multiply、divide方法进行加减乘除

    27.声明一个数组的方法:

    int[] a=new int[100];//这整个数组全部默认为0

    int[] a=new int[3]{1,2,3};

    int[] a={1,2,3};

    int[] a=new int[3]; Arrays.fill(a,0);//将数组全部赋值0

    int[] b=Arrays.copeOf(a,2*a.length);//拷贝数组,也常用户数组扩容

    28.foreach不能处理多维数组

    如果foreach应用到二维数组上需要嵌套使用

    for(int[] line:arr)
        for(int tmp:line)
                //这才能按序取到数组每个数字

     29.小数类型(double、float)不能用==判断是否相等

    由于计算机计算小数都存在误差,所以直接用==很难判断

    double a=1/3;
    double b=0.333333d;
    if(a==b)
    ...

    应该用特定的精度来判断

    double a=1/3;
    double b=0.333333d;
    double dis=1e-6;
    if(Math.abs(a-b)<dis)
    ...
  • 相关阅读:
    undefined与null的区别
    js 合并多个对象 Object.assign
    No 'Access-Control-Allow-Origin' Ajax跨域访问解决方案
    CSS3的REM设置字体大小
    延迟运行方法
    如何用 SQL Tuning Advisor (STA) 优化SQL语句
    Oracle数据库查找持有锁的SQL语句,而不是请求锁的SQL语句(原创)
    Oracle记录登录失败的触发器
    11g ASM新特性
    闪回事务(Flashback Transaction)
  • 原文地址:https://www.cnblogs.com/cckong/p/14257040.html
Copyright © 2011-2022 走看看