• 01_Java的基本程序结构设计1


    3.1一个简单的Java应用程序

    public class FirstSimple
    {
        public static void main(String[] args);
        {
            System.out.println("hello world!")
        }
    }

      1.Java区分大小写

      2.关键字public称为访问修饰符(access modifier)

      3.关键字class表明Java程序中的全部内容都包含在类中。java应用程序中的全部内容必须放置在类中。其后面跟着类名。类名建议按照驼峰法来写。

      4.源代码的文件名必须和公共类的名字相同,并用.java结尾。

      5.System.out.println()表示使用了System.out对象,并调用了他的方法println。java的通用语法是obj.method(para)

      6.以/**开头,以*/结尾的注释可以自动地生成文档。具体方法见第4章

    3.2数据类型

    public class Main
    {
         public static void main(String[] args)  
        {
        double x1 = 0x1.0p-3;
        System.out.print(x);  //0.125 without /n
        System.out.println(2.0-1.1);  // 0.1250.89999999
        int 我=1; // ‘我’可以作为变量,我是Unicode字符,属于java中的“字母”
        if (Character.isJavaIdentifierPart(我)) System.out.println(我);  // 1
        char l = '我';
        if (Character.isJavaIdentifierStart(l)) System.out.println(l);  //
        }
    
    }

      1.在java中,整型的范围与运行java代码的机器无关。

      2.长整型后面有l或者L,十六进制0X或者0x,八进制前面是个0,二进制表示0b或者0B

      3.java中没有任何无符号形式的int,long,short或byte类型。

      4.java中默认的小数形式是double,如果是float需要在后缀加上F或者f,注因为是二进制表示法, 无法精确表达小数点后以5结尾以外的数字。如上例

      5.可以使用十六进制表示浮点数值。0.125==0x1.0p-3  ,其中p表示以2为底的指数

      6.Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY Double.NaN分别表示这三个特殊的值。其中NaN不是一个数值,所以不能使用==检测Double.NaN,但可以使用Double.isNaN(x)方法。

      7.java中‘A’是编码值为65的字符常量(char),而"A"是一个字符串(String)。

      8.java中 boolean类型有两个值false和true,整数值和布尔值之间不能相互转换。

      9.与python不同,java声明变量后必须显式初始化,另外与C++不能,java不区别定义和声明。

      10.如果想知道那些Unicode字符属于java中的“字母”,可以使用character类的isjavaIdentifierStart和isjavaIdentifierpart

      11.在java中使用final指示常量。 final double PER=1.2;关键字final表示这个变量只能被赋值一次。在java中,经常希望某个变量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字static final设置一个类常量

        注意:类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。而且这个常量被声明为Public,那么其他类的方法也可以使用这个常量。

     

    3.3运算符

        public static strictfp void main(String[] args) {
            double x = 4;
            double y = Math.sqrt(x); // public static double sqrt(double a)
            System.out.println(y);  // 2.0 public static final PrintStream out = null;
            System.out.println(-15%6);  // -3
            int a = Math.floorMod(-15,6);  // like % ,but a little different
            System.out.println("a is " + a);  // a is 3
            System.out.println("π is" + PI);  // here PI = Math.PI
            int b = 123465789;
            float c = b;
            System.out.println("b is " + b + '
    ' + "c is " + c);  // b is 123456789 c is 1.234567892E8是 10的8次但是多了一个2?
            double d = b +c;
            System.out.println("d is "+ d);  // d is 2.46931584E8
            x = 9.997;
            int nx = (int) x;
            System.out.println("nx="+nx);
            nx+=3.5;
            nx++;
            System.out.println("nx ="+nx);  // 9+3.5 = 9+3=12 nx = (int)(nx +3.5),but nx = nx + 3.5 will error!

    1.对于浮点数的算术运算实现可移植性是十分困难的。默认情况下,虚拟机设计者允许对中间计算结果采用扩展的精度。但是,对于使用strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。
    比如public static strictfp void main(String[] args)

    2.在Math类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函数也不同。其中Math.sqrt()方法和System.out.println()方法不同。前者属于静态方法。后者处理System.out对象。另外Math类中还有pow(x,a)求x的a次幂的方法,floorMod对整数求余的方法,效果相当于%,但对于负数的余数取绝对值了。

    3.Java中使用Math.PI和Math.E表示π和e的近似值。

    4.不要再boolean类型与任何数值类型之间进行强制类型转换,这样可以防止发生错误。(那么问题来了,如何对int String boolean之间转换呢?)

    5.如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换。例如int x = 1;x+=3.5;// 1+3.5=4【这个和双目运算符不同!

    6.自增和自减和cpp一样,也有前缀和后缀之分,前缀先加再使用变量;后缀先使用变量再加。Java中的关系运算和cpp中也一样,按照“短路”的方式计算的,&& ||分别表示逻辑与和逻辑或,如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。

       e.g. x != 0 && 1 / x>x+y // no division by 0。如果x等于0,那么第二部分就不会计算。因此,如果x为0,也就不会计算1/x

    7.与Cpp不同,java的>>>会用0填充,>>用符号位填充。

    8.运算符优先级

  • 相关阅读:
    HGOI20191115 模拟赛 题解
    HGOI20191114 CSP模拟赛 反思
    HGOI 20191108 题解
    HGOI 20191107 题解
    HGOI 20191106 题解
    HGOI 20191105 题解
    HGOI 20191103am 题解
    HGOI 20191101am 题解
    HGOI 20191031am 题解
    新的博客!!!
  • 原文地址:https://www.cnblogs.com/SsoZhNO-1/p/11569404.html
Copyright © 2020-2023  润新知