:java中的标识符 identifier
1,java中给类,接口,方法,变量等起名字使用的字符序列
* 规则:
* 英文的大小写字母
* 数字不能开头
* java关键字不能用
* $和_也可以
2,包:对应到文件系统中,就是文件夹;
* 单级包,就对应了一级的文件夹
* 多级包,就对了多级的文件夹
* 命名规则: 不要使用大写字母,都小写字母,
* 可以有多级包,多级包之间使用.隔开
* 包名(package)的格式
Name:域名倒着写(来表示公司或者组织).项目名.模块名
例如:www.newedu.com(公司名)
com.newedu.jb.day03
3,类和接口:
一个单词:首字母大写,其他字母小写
* 多个单词:首字母大写,其他字母小写,第二单词的首字母也大写,其他字母也
* 方法和变量:
* 一个单词:所有的字母小写
多个单词:第一个单词的所有字母小写,第二单词之后的,首字母大写,其他字母小写
*这种形式也叫“驼峰式”
*4,常量:
* 一个单词: 所有的字母都大写;例如:PI
* 多个单词:所有的单词都大写,并且使用“_”这个连接所有的单词
* 例如:MY_NAME,SUB_WAY
5变量:
语法格式:
* 数据类型 变量名 = 初始值(常量)
*
* 数据类型:基本数据类型8种
*
* 整数类型:byte,short,int,long
* 浮点数类型:float, double
* 字符:char
* 布尔类型:boolean
6,类型转换
(1) 自动类型转换(隐式转换类型),指两种数据类型在转换过程中,不需要显示的声明
转换条件:
A:两种数据彼此兼容
B:目标类型的取值范围大于原类型的取值范围
* 隐式转换的规则(默认转换):
*
byte,short,char—int—long—float—double
byte,short,char相互之不转换,他们参与运算首先转换为int类型
(2) 强制类型转换:从大数据类型到小类型需要强制转换可能会造成精度损失或溢出
目标类型 变量名=(目标类型)(被转换的数据);
7,英文单词:operator:运算符 identifire标识符 constant 常量 resolve 溶解,决定,要做的事
Dead code执行不到的代码
default:拖欠,不履行expression:表达式 ctrl+shift+/ 注释(需要先选定)
8, 快捷键:ctrl+alt+方向键(左右键)选中一行
Format 格式化代码(在java中,ctrl+shift+f对齐,格式化代码)
Ctrl+d删除当前行
alt+方向键移动选中的这一行。
* 面试题:
* short s=1;s = s+1;
* short s=1;s+=1;
* 上面两个代码有没有问题,如果有,那里有问题
*/
// short s = 1;
//Type mismatch: cannot convert from int to short
//s = (short) (s+1); // 左边为short类型 = 右边int类型,隐式转换无法成功的发生,需要强制类型转换
// byte,char ,short 类型不能直接参与运算,参与运算前,先转换为int类型
short s=1;
s += 1;
}
}
}
8,面试题:
面试题:
* 1: 请自己实现两个整数变量的交换 a=10,b=20
*
* 分析:
* 方法1:使用中间变量(第三个变量)
* 方法2:
* 加法方式
* a = a + b;
* b = a–b; => (a+b) -b => a , 实现 了 a的值赋值了b
* a = a–b; => (a+b) -a => b ,实现了b的赋值给a
* 方法3:
* 一句话搞定
* a = (a+b) - (b=a)
*
* 方法4:
* 位运算方式
* 本方法采用的是位运算中的技巧:a = a ^ b ^ b,也就是一个数连续与另一个数进行两次异或运算结果还是这个数本身):
* System.out.println("10^3^3="+(10^3^3));
* a = a ^ b;
* b = a ^ b;//此时的a已经不是原来的a了,此时右边的表达式就等价于:( a ^ b ) ^ b ,结果是a,并把它赋予变量b;
* a = a ^ b;//此时的a与b都不是原来的a与b了,此时右边的表达式就等价于:a ^ ( a ^ b ) ,结果是b,并把它赋予变量a;
* 这种方法技巧性比较强,而且运算速度比较快,节省内存
*
* 赋值操作是有返回值的
* int c = b=10;
* 2:请用最有效率的方法计算出2乘以8等于几?
* (2<<3)
* or (8<<1)
* @author jerry
*
*/
public class OperatorDemo6 {
public static void main(String[] args) {
/*int a = 10;
int b = 20;
int c = 0;
System.out.println("变换前: a="+ a+",b="+ b);
c = a;
a = b;
b = c;
System.out.println("变化后: a="+ a+",b="+ b);*/
int a = 10;
int b = 20;
int c = 0;
System.out.println("变换前: a="+ a+",b="+ b);
// a = a + b;
// b = a - b;
// a = a - b;
// a = (a+b) - (b=a);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("变化后: a="+ a+",b="+ b);
}
}
10,典型例题:
请在控制台输出满足如下条件的五位数
个位等于万位
十位等于千位
个位+十位+千位+万位=百位
//五位数:10000-99999
/*
* abcde
* a=e
* b=d
* c=e+d+b+a
* 满足以上条件
* int x=12345;
* 考虑问题:int e=5如何得到的
*
*
* */
for(int i=10000;i<=99999;i++){
int num=i;
int e=i%10;
int e1=i/10;
int d=e1%10;
int d1=e1/10;
int c=d1%10;
int c1=d1/10;
int b=c1%10;
int a=c1/10;
if(e==a&&b==d&&c==a+b+d+e){
System.out.println(num);
}
}
}
}
7 我需要要注意的题型
(1)//int x=1;
//int y=x++;此时,y=1;x自增后变为2,
//System.out.println(x);此时x=2
//System.out.println(y);
//System.out.println("x="+ x++);先把x=2赋值给“x=”,然后x再自增,后x=3
//System.out.println("x="+ ++x);x先自增运算,然后再赋值,此时x=4
X=1
Y=1
X=2
X=4
8,面试题:
* byte b1=3,b2=4,b;
* b=b1+b2;
* b=3+4;
* 哪句是编译失败的呢?为什么呢?
* @author jerry
*
*/
public class VariableDemo2 {
public static void main(String[] args) {
byte b1=3,b2=4,b;
//Type mismatch: cannot convert from int to byte
b=(byte) (b1+b2);
/**
* b= b1+b2
* b = (int)b1+(int)b2
* b= int(b1+b2)
*/
b=3+4;
System.out.println('a');
System.out.println('a'+1);
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
}
}