摘要:
1、关键字 2、标识符 3、注释 4、常量和变量 5、运算符 6、语句 7、函数 8、数组
① 标识符定义规则与规范
② 整数常量进制表示
八进制 0 开头
十六进制 0X 或 0x 开头
二进制 0b 或 0B 开头 (Java SE 7 后开始支持)
③ 八大基本数据类型
1、关键字
被java语言赋予特殊含义的单词(小写)。
2、标识符
程序中自定义的一些名称。
规则:
(1)由 26 个英文字母大小写、数字 0~9、下划线 _ 、美元符号 $ 组成。
(2) 数字不可以开头,不可以使用关键字。
规范:
(1) 包名:全部小写xxxyyyzzz
(2) 类名、接口名:由多个单词组成,单词首字母大写XxxYyyZzz
(3) 变量名、函数名:由多个单词组成,除首个单词首字母小写外,后面单词首字母大写xxxYyyZzz
3、注释
4、常量和变量
(一)常量
(1) 整数常量
/** 常量和进制 */ public class ConstantDemo { public static void main(String[] args) { // 6 的二进制 110 System.out.println(Integer.toBinaryString(6)); // -6 的二进制 11111111111111111111111111111010 System.out.println(Integer.toBinaryString(-6)); // JavaSE 7 开始支持二进制常量 System.out.println(Integer.toBinaryString(0b100)); System.out.println(Integer.toBinaryString(0B100)); // 十六进制的表示 System.out.println(Integer.toBinaryString(0x10)); System.out.println(Integer.toBinaryString(0X10)); // 八进制 System.out.println(Integer.toBinaryString(010)); } }
(3) 布尔类型常量 ture、false
(4) 字符常量 用 ' ' 标识
(5) 字符串常量 用" " 标识
(6) null 常量
(二) 变量
Java是强类型语言,通过明确数据类型、变量名称和数据来开辟命名空间
概念:
内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
用来不断的存放同一类型的常量,并可以重复使用
使用变量注意: 变量的作用范围(一对{}之间有效) 初始化值
引用数据类型
类 class
接口 interface
数组 []
自动类型转换(隐式类型转换、自动类型提升)
表达式的数据类型自动提升:所有的 byte 型、short 型和 char 的值将被提升到 int 型。
强制类型转换(显式类型转换)
/** 类型转换 整数默认情况下是 int 类型。小数默认情况下为 double 类型。 */ public class VarDemo { public static void main(String[] args) { short s = 30000; // short -32768~32767 long l = 4; System.out.println(l); l = 4l; // 定义为长整型。l 可省略 System.out.println(l); // float f = 2.4; // 编译不通过,可能损失精度。 float f = 2.3f; // 默认情况下,小数是double型 double d = 2.3; char ch = '4'; boolean bo = true; boolean bo1 = false; byte b = 3; // b = b + 2; // 编译失败,可能损失精度 // 默认情况下,整数是int b = (byte)(b + 2); //强制类型转换 System.out.println(b); System.out.println('a'); System.out.println('a' + 1); // char 提升为 int 类型 System.out.println((char)('a' + 1)); //强制类型转换 } }
5、运算符
(1) 算数运算符 (Arithmetic Operation)
% 取模负数时只看被模,即左边
+ 字符串连接符。字符串数据 和 任何数据使用 + 相连接,最后都会变成字符串
/* 算数运算符 转义字符 */ class ArithmeticOperator { public static void main(String[] args) { // % 取模 System.out.println(1%-5); System.out.println(-1%5); //取模负数时只看被模,即左边 // 字符串连接符 // 字符串数据 和 任何数据使用 + 相连接,最后都会变成字符串 System.out.println("5+5" + 5 + 5); //"5555" /* 转义字符,通过 \ 来转变后面字母或者符号的含义 \n 换行 \b 退格,相当于backspace \r 按下回车。Window系统中,回车符是由两个字符表示的,\r\n. \t 制表符,相当于tab键 */ System.out.println("Hello \n world"); System.out.println("Hello\bworld"); System.out.println("Hello World \r java"); //回车后,\r前的字符串被后面的字符串覆盖 System.out.println("Hello \t world"); System.out.println("\"Hello\"world"); System.out.println("\\Hello\\world"); char cn = '\n'; char cn1 = '\''; char cn2 = '你'; //可以使用多种方式为char类型赋值 } }
(2) 赋值运算符 (Assignment Operator)
= , +=, -=, *=, /=, %=
/** 赋值运算符 */ public class AssignmentOperator { public static void main (String[] args) { char c = 95; // c = c + 5; // 编译不通过 c += 5; // 赋值语句,自动转换 System.out.println("c = " + c); int a,b; a = b = 5; // 同时给a,b赋值,为5 System.out.println("a = " + a + ", " + "b = " + b); } }
(3) 比较运算符 (Comparison Operator)
(4) 逻辑运算符 (Logical Operator)
& 与 (AND)
| 或 (OR)
! 非 (NOT)
^ 异或 (XOR)
&& 与 (AND) 当左边为假,则右边不运算
|| 或 (OR) 当左边为真,则右边不运算
相对 &、| 而言,&&、|| 运算效率较高。后面条件可能不执行,而对程序产生一定影响(Short-circuiting,短路)
(5) 位运算符 (Bitwise Operator)
移位运算对于数值运算是最快的
<< 左移,乘以2的移动的位数次幂
>> 右移,除以2的移动的位数次幂
>>> 无符号右移
>> 和 >>> 的区别
>>最高位由原首位决定移位填充值
>>> 最高位补0
& 与
| 或
^ 异或
~ 反码
1、由 -6 = ~6 + 1 ,得~6 = -7
2、一个数异或同一个数两次,值不变 ( 用于加密、交换数据)
对两个整数变量的值进行交换(不需要第三方变量):http://www.cnblogs.com/Ashia/archive/2012/04/29/2476444.html
/** 需求 : 10进制转换为16进制,使用移位和与的方法 思路 : int 占4字节内存。共 32 位 &15,取后四位。转化为 十六进制数 */ public class HexConverter { public static void main (String[] args) { int i = -311; System.out.println(converter1(i)); System.out.println(converter2(i)); } public static String converter1 (int i) { String result = ""; // 循环直到所有 i 右移为 0 while (i != 0) { int temp = i & 15; if (temp <= 9) { result = temp + result; } else { result = (char)(temp - 10 + 'a') + result; } // 无符号右移。防止负数时 i 无法到0 i = i >>> 4; } if (result == "") { result = "0"; } return result; } public static String converter2 (int i) { // 使用 java 提供的 api 进行进制转换 return Integer.toHexString(i); } }
(6) 三元运算符 (TernaryOperator)
( 条件表达式 ) ? 表达式一 :表达式二
好处:可以简化 if ... else ...
弊端: 运算结果是一个表达式。必须赋值给变量等。
可读性较低
6、语句
7、函数
8、数组