单行注释 //
多行注释 /* */
文档注释 /** */
初学者先写注释再写代码,先有思想后写代码实现
关键字全小写
goto和const为保留字存在,目前并不存在
英文大小写字母
数字字符
$和_
!!不能以数字开头,不能史Java中的关键字,区分大小写
包(文件夹名):要求全小写,一般是公司的域名倒着写
类或接口:如果是一个单词要求首字母大写,多个单词时要求首字母都大写
方法和变量:如果是一个单词,每个字母都小写,如果时多个单词,第二个单词开始首字母大写
常量:一个单词字母都大写,多个单词时用下划线连接每个单词,字母都大写
字符串常量 "a",整数常量,小数常量,字符常量's'里面只能放单个字母,布尔常量true,false,空常量null
二进制--0b,八进制--0开头,十进制,十六进制--0x开头(10=A,……15=F),(b,x大小写都可以)
1byte=8bit 1k=1024b 1m=1024k1g=1024m1t=1024g
进制越大表现形式越短
进制转换
系数:每一位上的数据;
基数:X进制,基数就是X;
权:在右边,从0开始编号,对应位上的编号即为该为的权
结果:把系数*基数的权次幂相加。
例子:1*10^2+5*10^1+6*10^0
十进制转任意进制
除积倒取余数(用数学方法来,除数就是进制数,余数从下往上写);
8421码及特点(快速转换法)
(二进制)110011---=---(十进制)4+8+64+128=204
128 64 32 8 4 2 1
(二进制)111000---=---74(八进制)三个当一位数 111--7 , 100--4
(二进制)11 1100---=---(十六进制)=3C
快速转换法--(十进制)60 跟8421对比,减去对应的数,能减上1,不能减上0
原码反码补码
原码:二进制表示定点表示,最高位为符号位,“0”表示正,“1”表示负,如7-----0 000111,-7------1 000111
反码:整数反码不变,负数反码对原码取反(如110---001)
补码:整数补码与原码相同,负数补码是其反码的末位加1
运算时通过补码来计算
变量
在程序执行过程中,在某个范围内其值可以发生改变的量
数据类型 变量名=变量值;
用来不断存放同一类型的常量,并可以重复使用
整型byte,short,int,long,浮点型float,double,字符型char,布尔类型boolean
面试问答:boolean理论上时占八分之一字节,因为一个开关就可以决定true和false了,但是Java中boolean类型没有明确指定他的大小
!注意事项
1.同一个区域不能使用相同的变量名;
2.局部变量在使用前必须赋值
3.一条语句可以定义几个变量
隐式转换
小的数据类型会提升为大的数据类型再运算(eg:byte b=3; int a=4; x=a+b; x=7);
数据类型转换(强制类型转换)
小的数据类型与大的数据类型相运算,求小的数据类型结果
方法:加一个强制转换符;eg:byte b=3; int a=4; b = (byte)(a+b);求得b为byte类型
!当结果超出数据类型范围,结果会损失进度。
面试题之变量相加和常量相加的区别
byte b1,b2,b3; b1=3;b2=4;b3=b1+b2;从两个方面回答:
1.byte与byte或short或char进行运算时会提升为int,两个int相加结果也为int
2.b1和b2是两个变量,变量里面存储的值都变化的,所有在程序运行中JVM时无法判断里面具体的值,相加有可能超出byte的取值范围
ASCII码表的三个重要值
’0‘=48;’A‘=65;’a‘=97.
System.out.print("hello"+'a'+1);-----helloa1'
System.out.print(1+’a‘+"hello");-----98hello;
任何数据类型用+与字符串相连接都会产生新的字符串
char占两个字符,汉字也占两个字符,所以char可以存储汉字;
分类:算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目(元)运算符
算术运算符:
+ - * / % ++ --
%求余运算符规律:
1.当左边绝对值小于右边,结果是左边的;
2.当左边的绝对值等于右边的倍数时,结果是0;
3.当左边的绝对值大于右边的绝对值时,结果是余数
4.结果符号 只和左边符号有关;
5.任何一个正整数%2的结果不是0就是1,可以用来当作切换条件
++与--
单独使用时放前放后都一样,参与运算时,放在前面先自增或自减,再运算;放后面先运算再自增或自减
赋值运算符:
=:赋值,右边赋值给左边;+=:先左右相加,结果赋值给左边;
赋值运算面试题:
short s = 1;s = s+1;输出s---错
short s=1; s+=1 ;输出s ---对,
short运算转换为int,结果为int;
s += 1;结果为2,原因 运算时自加了一个强制转换符;
关系运算符:
==,!= , >,>=,<,<=
输出结果只有两个,true 和 false;
逻辑运算符
&与,| 或,^异或,!非,&&,
^异或-----两边相同为false ,两边不同为true
&和&&,结果相同,&&具有短路效果,一旦有一点错,结果肯定为错了。(左边为false则右边不执行)。
|和|| 类似&和&&
位运算符
位&,位|,位^,位~;
&有0则0;|有1则1;^相同则0不同则1;~按位取反;--------0,1代表true和false
????? 位~:eg:~6,先取6的反码,-1得到补码,得到的反码是结果的反码,再求原码---说明不清
位异或运算符的特点及面试题
^的特点:一个数据对另一个数据位异或两次,该数本身不变:可用在数据交换上,
x=10;y=5; x=x^y; y=x^y; x=x^y
10^5; 10^5^5 10^5^10
位移运算符<<,>>左移和右移,>>>无符号右移,
左移:左边最高位丢弃,右边补齐0;规律:向左移动几位即乘以2的几次幂
右移:最高位时0,左边补齐0,最高位是1,左边补齐1,规律:向右移动几位即是除以2的几次幂
>>>:无论最高位是0还是1,左边补齐0
三元运算符
格式 (关系表达式)?表达式1:表达式2
eg z=(x>y)?x:y-------x>y时,取x,不大时取y;
用于比较两个数是否相同,三个数的最大值等;
语句
swith建议判断固定值时使用;
if 建议判断区间或范围时使用;