luogg_java重新学习_第二章:基本语法01(概念)
2016-07-10 19:26
387 查看
关键字
定义:被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
long 8字节,-2^63~2^63-1
浮点型float(F),double
float 4字节
double 8字节
字符型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
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树