1.关键字和保留字
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字:goto 、const
2.标识符
起名的地方:
26字母大小写(Java敏感)、0-9、_、$。
数字不开头 不空格、不关键字保留字。
规范
- 包名:小写 xxxyyyzzz
- 类名、接口名:首字母大写 XxxYyyZzz
- 变量名、方法名:第二个单词的首字母大写 xxxYyyZzz
- 常量名:大写 XXX_YYY_ZZZ
如果不遵守,编译也可以通过(语法🆗)。但是建议遵守。
3.变量
变量先声明赋值再使用,在作用域内,同作用域不能重名
3.1分类
第四章详细看(👇)
-
float表示的数值范围比long还大
-
char=2字节 单引号。且只能放一个
转义字符:\b退格 \n换行 \r回车 \t制表
字符集:后续IO流继续
A65 a97
-
boolean:true、flase
-
string
String不是基本数据类型,属于引用数据类型。双引号
string可以与8种基本数据类型做运算,且只能连接运算
string之后的+都是string
//练习1
char c = 'a';//97 A:65
int num = 10;
String str = "hello";
System.out.println(c + num + str);//107hello
System.out.println(c + str + num);//ahello10
System.out.println(c + (num + str));//a10hello
System.out.println((c + num) + str);//107hello
System.out.println(str + num + c);//hello10a
//练习2
//* *
System.out.println("* *"); //* *
System.out.println('*' + '\t' + '*'); //93 //char算数
System.out.println('*' + "\t" + '*'); //* * //"\t"是string。连接
System.out.println('*' + '\t' + "*"); //51* //先加法再连接
System.out.println('*' + ('\t' + "*")); //* * //
想清楚做运算还是做连接
特别:输出3.5不带引号。此处带引号说明是字符串而不是数字
String str2 = 3.5f + "";
System.out.println(str2);//3.5
3.2自动类型转换
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。容量:数值范围大小。比如float大于long
- byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
- boolean类型不能与其它数据类型运算。
- 当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型。
3.3强制类型转换
- 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。
- 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
boolean类型不可以转换为其它的数据类型。
特殊情况
默认12345int转为long🆗;默认12.3double转为float不🆗
3.4进制
- 2-10easy
- 2-8 3位--1位
- 2-16 4位--1位
4.运算符
4.1分类
- 算术运算符: + - * / %(±看被模数) ++ -- 连接+
- 赋值运算符:=
int n=10;
n += (n++) + (++n);// n = n + (n++) + (++n)
System.out.println(n);//32
-
比较运算符(关系运算符):== != <= >= instanceof
结果都是boolean类型
-
逻辑运算符:& && | || ! ^(逻辑异或:不一样才是true)
-
“&”和“&&”的区别:单&时,左边无论真假,右边都进行运算;
-
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
-
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
-
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
- 位运算符:
int a = 8, b = 3;
System.out.println(a>>>b);//1
System.out.println(a>>>b | 2);//3
- 三元运算符:
char x = 'x';
int i = 10;
System.out.println(true? x : i);//120 //97a
System.out.println(true? 'x' : 10);//x
/*
* 如果其中有一个是变量,按照自动类型转换规则处理成一致的类型;
* 如果都是常量,如果一个是char,另一个是其他,按照自动类型转换规则处理成一致的类型;
如果一个是char,如果另一个是[0~65535]之间的整数按char处理;
*/
4.2优先级
5.程序流程控制
顺序、分支(选择)、循环
补充 : break continue
-
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层{}语句块
-
continue 语句
continue只能使用在循环结构中
continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环
练习
1.今天是周二,100天以后是周几?
//
public class TestExer2 {
public static void main(String[] args)
{
int week = 2;
week += 100;
week = week % 7;
System.out.println("100天后星期" + week);
}
}
2.小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
public static void main(String[] args)
{
int h = 80;
double s = (h - 32) / 1.8;
System.out.println(h + "华氏度,是摄氏度" + Math.round(s));
}
3.比较
short s1 = 1; s1 = s1 + 1;//有什么错?
short s1 = 1; s1 += 1;//有什么错?
//答:
//short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
//short s1 = 1; s1 += 1;(可以正确编译)
4.编写程序,从键盘接收整数参数。如果该数为1-7,打印对应的星期值,否则打印“非法参数”。
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("请输入星期值:");
int week = input.nextInt();
switch(week){
case 1:
System.out.println("星期一:Monday");
break;
case 2:
System.out.println("星期二:Tuesday");
break;
case 3:
System.out.println("星期三:Wednesday");
break;
case 4:
System.out.println("星期四:Thursday");
break;
case 5:
System.out.println("星期五:Friday");
break;
case 6:
System.out.println("星期六:Saturday");
break;
case 7:
System.out.println("星期天:Sunday");
break;
default:
System.out.println("非法星期值");
break;
}
}
5.程序输出
public static void main(String[] args) {
boolean x = true;
boolean y = false;
short z = 40;
if ((z++ == 40) && (y = true)) {
z++;
}
if ((x = false) || (++z == 43)) {
z++;
}
System.out.println("z = " + z);
}//z = 44
6.求ax2+bx+c=0方程的根.考虑几个解:a!=0, a=0 b!=0 提示1:Math.sqrt(num); sqrt指平方根。例如:求x方-4x+1=0方程的根、求x方-2x+1=0方程的根。
/*求ax2+bx+c=0方程的根.
考虑几个解:a!=0, a=0 b!=0
提示1:Math.sqrt(num); sqrt指平方根
例如:
求x方-4x+1=0方程的根
求x方-2x+1=0方程的根
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("一元二次方程:ax^2+bx+c=0");
System.out.println("请输入参数a:");
double a = input.nextDouble();
System.out.println("请输入参数b:");
double b = input.nextDouble();
System.out.println("请输入参数c:");
double c = input.nextDouble();
if(a!=0)
{
double temp = b*b - 4*a*c;
if(temp==0)
{
double x = -b/(2*a);
System.out.println("该方程是一元二次方法,有两个相同解:" + x);
}
else if(temp>0)
{
double sqrt = Math.sqrt(temp);
double x1 = (-b+ sqrt)/(2*a);
double x2 = (-b- sqrt)/(2*a);
System.out.println("该方程是一元二次方法,两个不同解:" + x1 +"," + x2);
}
else
{
System.out.println("该方程是一元二次方法,在实数范围内无解!");
}
}
else
{
if(b!=0)
{
double x = -c/b;
System.out.println("该方程是一元一次方程,有一个解:" + x);
}
else
{
System.out.println("不是方程,是一个等式");
if(c == 0)
{
System.out.println("等式成立");
}
else
{
System.out.println("等式不成立");
}
}
}
}
? 写一个程序,找出4位数的所有吸血鬼的数字
例如:1260=2160、 1827=2187