zoukankan      html  css  js  c++  java
  • JavaSE的基本语法

    JavaSE基本语法

    一、语法的注意事项

    1、严格区分大小写
    2、每句命令结尾使用分号
    3、符号都是英文状态
    4、括号、引号都是成对出现的!
    5、注意缩进

    Tips:

    • 文件名和类名可以不一致,但public修饰的类必须和文件名一致!
    • 同一个java文件下,有几个class就有几个“.class”文件
    • 同一个java文件下,只能有一个public class 类,并且该类的类名必须与java文件的文件名一致。
    • 当java下有很多类时,可以使用 java + 编译好的类进行使用。

    二、变量

    定义:

    内存中的一块数据存储空间的表示

    1. 变量的分类:按照类型分类
      基本数据类型和引用数据类型

    2. 按照声明的位置分类

      成员变量:类内、方法体外声明的变量
      局部变量:方法体内声明的变量

      二者在初始化值方面的异同:
      同:都有生命周期。
      异:局部变量除形参外,需显示初始化。

    变量三要素

    数据类型

    字节和位的转换

    整型特点:
    1、编译器默认的整型类型是int。
    2、如果希望将整型的常量值表示成long类型,则需要在数值后面加l或L。
    3、每种数据类型存储的常量值必须在能表述的范围内,否则报错。

    浮点型特点:
    1、编译器默认的浮点型是double,如果希望当做float,则需要在数值后面加f或符F。
    2、浮点数在计算机底层的存储,会丢失精度,所得出的数是一个无限接近于真值的数。如果希望提高精确度,可以用BigDecimal类

    字符型特点:

    标识符

    1、标识符的命名规则

    由26个英文字母大小写,0--9,_或$符号
    数字不可以开头
    不可以使用关键字或保留字,允许包含
    严格区分大小写,长度有限制

    2、标识符的命名规范

    包名:xxxyyyzzz
    类名、接口名:XxxYyyZzz
    方法名:xxxYyyZzz
    常量名:XXX_YYY_ZZZ

    存储的数据

    变量的数据转换

    自动类型转换:容量小的类型自动转换为容量大的数据类型。
    byte、short、char之间不会进行数据转换,他们三者首先进行int类型转换。
    boolean类型不与其他数据类型进行转换。
    当任何其他基本数据类型与字符串类型进行(+)运算时,基本数据类型自动转换为字符串类型。

    需要注意的是:
    自动类型转换无语法,可自动转换。
    强制类型转换(大转小):
    数据类型 变量名 = (目标类型)数值;
    注意:强转只对最近的数值起作用

    byte a = (byte)3.5 * 10 + 2.5 * 20; // 错误
    byte a = (byte)(3.5 * 10 + 2.5 * 20); // 正确
    

    默认的数据类型
    1、整型数值默认为:int
    2、byte、short、char 之间进行运算,结果值的类型为int
    3、注意拼接运算,“看到底是先运算还是先拼接“

    system.out.println("hello"+'a'+12); // helloa12
    system.out.println('a'+12+"hello"); // 109hello
    

    三、运算符

    自增自减运算符

    如果作为独立语句使用,则i++;等价于++i;等价于i=i+1;

    如果作为表达式使用,则:int j= i++; 先赋值后自增;iint j= ++i; 先自增后赋值

    short s = 3; 
    s = s+2;// 强转语句错误
    s += 2; // 等价于 s = (int)(s+2);复合赋值运算符底层做了优化,进行了内部强转,效率较高!
    

    自增运算练习

    //自增运算问题
     
     
    class Test{
    	public static void main(String[] args){
    		int j = 1;
    		/*
    		j += ++j * j++;相当于
    		j = j + (++j * j++);
    		(1)先算右边
    		①先取j=1的值
    		②++j
    		A:j自增 j=2
    		B:取j=2的值
    		③j++
    		A:先取j=2的值
    		B:自增j=3
    		④乘法
    		2*2 = 4
    		⑤加法
    		1 + 4
    		⑥赋值
    		j = 5
    		*/
    		j += ++j * j++;
    		System.out.println(j);
    	}
    }
    

    逻辑运算符

    &&:如果第一个条件不成立,则不再判断第二个条件,直接结果为false。
    判断条件的顺序影响着程序的运行结果。

    if (newI >= 0 && newI < lengthX 
                    && newJ >= 0 && newJ < lengthY 
                    && board[newI][newJ] == words[index] 
                    && !tof[newI][newJ])
    if (board[newI][newJ] == words[index]
                    &&newI >= 0 && newI < lengthX 
                    && newJ >= 0 && newJ < lengthY 
                    && !tof[newI][newJ])
    

    三元运算符

    格式:条件表达式?表达式1:表达式2;
    运算规则:判断条件表达式的结果是否成立,如果成立,则执行表达式1,否则执行表达式2

    位运算符

    常见的位运算符:

    a<<b 左移:将a左移指定的b位,空缺位补0

    a>>b 右移:将a右移指定的b位,空缺位补符号位

    a>>>b无符号右移:将a右移指定的b位,空缺位补0

    a&b与:两位都为1,结果为1,反之为0

    a|b或:两位都为0,结果为0,反之为1

    位运算练习

    面试题15:二进制中1的个数
    请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

    public int hammingWeight(int n) {
            int count = 0;
            while (n !=0){
                count = count +1;
                n = n & (n-1);
            }
            return count;
        }
    

    四、进制

    (1)概述

    所有数字在计算机底层都以 形式存在。
    对于整数,有四种表示方式:

    (2)二进制

    java整数常量默认为int类型,占32位,第32位为符号位
    如果为long类型,占64位,第64位为符号位

    二进制整数有如下三种形式:
    1.原码:将整数直接转化为二进制形式。最高位为符号位。
    2.负数的反码:对原码按位取反,符号位为1。
    3.负数的补码:反码加1。
    4.需要注意的是:正数的原码、反码、补码皆一致。

    计算机以二进制补码的形式保存所有的整数。

    (3)为什么要使用原码、反码、补码表示形式呢?

    计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.

    特殊值:-128

    -1-127的结果应该是-128, 在用补码运算的结果中, [1000 0000]补 就应该是-128。
    但是此时-128,如果用补码到反码,再到原码去计算是不对的。

  • 相关阅读:
    vim的强大,vim设置和插件的使用,脱离windows才是王道
    [VS2013]如何闪开安装VS2013必须要有安装IE10的限制
    常用客户端实现逻辑
    开源控件ViewPagerIndicator学习
    常用设计模式
    主题演讲:未来新趋势电动车
    你最美好的年华
    一度总结
    android线程池ThreadPoolExecutor的理解
    Touch事件or手机卫士面试题整理回答(二)
  • 原文地址:https://www.cnblogs.com/njuptzheng/p/12935921.html
Copyright © 2011-2022 走看看