本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

转载请注明 出自 : luogg的博客园 谢谢配合!

关键字

  • 定义:被java语言赋予了特殊含义,用作专门用途的字符串。
  • 特点:关键字所有字母都小写。

保留字

  • 现有java版本尚未使用,但以后版本会作为关键字使用.byValue,cast,future,inner,outer,var,goto,const

标示符

  • java对各种变量方法和类等要素命名时使用的字符序列称为标示符。
  • 凡是自己可以起名字的地方都叫标示符

java中名称命名规范

  • 包名:多单词组成时所有字母都小写:xxxyyyzzz
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    int myInt = 1;
  • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

变量

  • 数据类型 变量名 = 初始化值;
  • 变量的作用域:一对{}之间

基本数据类型

  • 整型byte,short,int,long(L/l)
    byte 1字节(8byte), -128~127
    short 2字节,-2^15~2^15-1
    int 4字节,-2^31~2^31-1 , java1.7开始,加上前缀0b就可以写一个二进制数了,例如0b1001表示9
    long 8字节,-2^63~2^63-1
  • 浮点型float(F),double
    float 4字节
    double 8字节 **double/0 = Infinity(无穷)
  • 字符型char(只能表示一个字符,可以是英文中文标点,若要表示多个字符,用String)
    char c1='a';
    String str="abc";
  • 布尔型boolean

  • char类型还可以表示转义字符和unicode值

    char c1='\n';
    char c2='\t';
    char c3='\u1234';

基本数据类型转换

  • 自动类型转换:当容量小的数据和容量大的数据做运算时,容量小的数据会自动转换为容量大的数据。

    char,byte,short==>int==>long==>float==>double

  • 强制类型转换:容量大的转换为容量小的,要使用强制类型转换。

long l1=12345L;
int i1=(int)l1;

强制类型转换的问题:导致精度损失。

  • [x] String类型的字符串与基本数据类型之间的运算:只能是连接运算 + 。得到的结果仍然是一个字符串。
String str="abc";
int i1=12345;
String str2=str+i1;//abc12345;

原码、反码、补码

  • 对于正数,原码反码补码三码合一。
  • 反码:原码各个位除符号位外取反。
  • 补码:反码+1。
  • 不管正数还是负数,在底层都是以补码的形式存储的。

进制之间的转换

  • 十进制==>二进制:除2取余数的逆
  • 二进制==>八进制:三个数当做一个数。
    11101001==0351
  • 二进制==>十六进制:四个数当作一个数。

算术运算符

  • +(正号),-(负号),+,-,*,/,%(取模),++,--,+(连接符)
  • i++:先运算,后自增加1。
  • ++i:先自增加1,后运算
    int i1=10;
    int i2=i1++;
    System.out.println(i1);//11
    System.out.println(i2);//10

    int i3=10;
    int i4=++i3;
    System.out.println(i3);//11
    System.out.println(i4);//11
int i5=10;
        int i6=i5--;
        System.out.println(i5);//9
        System.out.println(i6);//10

        int i7=10;
        int i8=--i7;
        System.out.println(i7);//9
        System.out.println(i8);//9

赋值运算符

  • +=,-=,*=,/=,%=
short s=3;
        s=(short)(s+3);//不建议如此实现

        s+=3;//既可以实现运算,又不会更改s的数据类型。
  • =为赋值符号。==为等号,判断左右是否相等。

逻辑运算符

  • &逻辑与:不管左边是ture还是false右边都会进行运算。
  • &&短路与:当左边为false时右边不进行运算。(建议使用&&,)
  • |逻辑或:左端为true时,右端继续做运算。
  • ||短路或:左端为true时,右端不再做运算。(建议使用||)
  • !逻辑非
  • ^逻辑异或:左右两边取值不一样的时候才为1。

深入理解逻辑与和短路与的区别

boolean c=false;
        int c1=10;
        if(c&(c1++) >0){
            System.out.println("今天是个好天气");
        }else{
            System.out.println("难得没有雾霾");//难得没有雾霾
        }
        System.out.println(c1);//11

        int c2=10;
        if (c&&(c2++)>0) {
            System.out.println("今天是个好天气");
        }else{
            System.out.println("难得没有雾霾");//难得没有雾霾
        }
        System.out.println(c2);//10

位运算符

  • <<左移,左移几位,相当于成2的几次方
  • >> 右移,不足的用与最高位相同的数字补齐,0或1。
  • >>>:无符号右移,不足的都用0补全。
  • &:与运算,6&3=2;用2进制表示,上下相等用为1,否则为0。
  • |:或运算,6|3=7。用二进制表示,上下有一个为1,则为1。
  • ^:异或运算,6|3=5.用二进制表示,上下两边不一样时用1表示。
  • ~:反码。~6=-7。用二进制表示,直接各位取反。

    交换两个元素的值

int m=5;
int n=10;

方法一:提供一个临时变量
        int temp;
        temp=m;
        m=n;
        n=temp;
方法二:当m和n较大时,有可能出现精度损失
        m=m+n;
        n=m-n;
        m=m-n;
方法三:优点:没有上面两种方法的缺点。 缺点:难,想不到。
        m = m ^ n;
        n = m ^ n;//(m^n)^n=m
        m = m ^ n;//(m^n)^m
练习:以手动的方式,从控制台输出60的2进制8进制16进制
int i=60;
        //将十进制的数转换为二进制
        String binary=Integer.toBinaryString(i);
        System.out.println(binary);//111100
        //将十进制的数转换为八进制
        String octal=Integer.toOctalString(i);
        System.out.println(octal);//74
        //将十进制的数转换为十六
        String hex=Integer.toHexString(i);
        System.out.println(hex);//3c
三元运算符
  • 三元运算符:(条件表达式)?表达式1:表达式2;
  • 要求:表达式1与表达式2必须是同种数据类型。
  • 三元运算符可以转换为if-else,反之不成立。因为三元运算符必须有一个运算结果,而if-else不一定需要有运算结果。
    ```
    int i=10,j=20;
    int max=(i>j)?i:j;
    System.out.println(max);//20

    String str=(i>j)?"i大":"j大";
    System.out.println(str);//j大

int i1=10,j1=10;
String str1=(i1>j1)?"i1大":(i1==j1)?"相等":"j1大";
System.out.println(str1);//相等

//用三元运算符输出三个数中的最大值
int a=5,b=100,c=20;
int max1=(a>b)?a:(b>c)?b:c;
System.out.println(max1);//100
```

luogg_java学习_02_基本语法的更多相关文章

  1. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  2. Python学习--Python基础语法

    第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...

  3. php学习之基础语法

    这些语法都是在学习视频的过程中整理出来的,有些很简单的语法可能就没有整理了,只是记录了自己看来比较重要的语法内容.   1.变量使用 $ 声明 ,变量区分大小写   变量的类型:      4种标量类 ...

  4. 学习 React(jsx语法) + es2015 + babel + webpack

    视频学习地址: http://www.jtthink.com/course/play/575 官方地址 https://facebook.github.io/react/ 神坑: 1.每次this.s ...

  5. Verilog学习笔记基本语法篇(十二)&#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183; 编译预处理

    h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...

  6. PHP 学习笔记---基本语法

    ------php语言与JavaScript的使用 方法是相似 <script type="text/javascript"> </script>--js与 ...

  7. python3.x IDLE学习及基础语法(学习head first python 第一章)

    1. 使用Tab键可以显示IDLE提供的一些建议: 2. Alt-N 移至下一个代码语句,Alt-P 移至上一个代码语句: 3. 列表类似于C++里的链表,有插入函数insert(位置,数据项),在列 ...

  8. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

  9. MySQL学习笔记——基本语法

    SQL——结构化查询语言(Structured Query Language) 1> SQL语言不区分大小写,建议关键字用大写,但是字符串常量区分大小写 2> SQL注释:/**/多行注释 ...

随机推荐

  1. CentOS7 安装Nginx

    由于需要,这段时间学一点“nginx”.关于nginx就不介绍了,http://wiki.nginx.org/Main有非常详细的介绍.安装等. 安装软件我习惯到官网下载源码,http://nginx ...

  2. btrace使用

    btrace使用 目录btracee是btrace的解压目录 btrace/btrace是btrace的项目工程 root@ubuntu:/usr/local/bogon/btrace# tree b ...

  3. java 堆栈的区别(转百度)

    转:http://zhidao.baidu.com/link?url=Y1XnuCnTiw6BsUoW85MWSx_x7k0QAS39kz4dTy9ngkMkZjvlSEHVfdflOGVWs6TcH ...

  4. Editthiscookie

    Editthiscookie,联调,.s环境加cookie才能访问.laravel

  5. XAF How to: 实现一个WCF Application Server 并配置它的客户端应用

    本主题描述了如何实现一个 WCF 中间层应用程序服务器及如何配置 XAF客户端连接到此服务器. 注意 本主题演示可以由解决方案向导自动生成的代码.执行操作时,如果你想要在现有的 XAF 解决方案中实现 ...

  6. KMP - HDU 1711 Number Sequence

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. 【wikioi】1403 新三国争霸(dp+kruskal)

    http://wikioi.com/problem/1403/ 一开始的确感觉和bzoj1003很像,不同的是这里还要求联通,求最小的边. 我们可以想到用最小生成树(为嘛我自己想不到呢..) 我们可以 ...

  8. screenX clientX pageX的区别

    screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX:跟screenX相比就是将参照点改成了浏览器内容区域的左上角 ...

  9. Cow Exhibition_背包(负数情况)

    Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - ...

  10. Linux Bash终端支持中文显示

    方法:修改系统变量LANG 即时生效: LANG=en_US.UTF- 永久生效: 修改.bashrc,加入 fi