标识符
程序中 对类,方法,变量名的字符序列
程序中可以自己命名的字符序列
语法强制要求:
1)大小写字母,数字,下划线,$;
2)数字不能开头;
3)不可以使用关键字,保留字;
4)不能有空格,区分大小写
人为约定规范 约定大于配置
1)类名首字母大写,变量名,方法名首字母小写Person person = new Person();
2)见名知意
3)驼峰表示 userName 下划线 user_name
4)常量名全部大写 USER_COUNT
5)包名全部小写
Java变量
程序中最基本的存储单元,运行中值可变.
本质上指向内存中一块空间,使用前必须先声明(申请),使用前必须赋值.
声明语法:
[修饰符] 数据类型 变量名 [=值]
Java数据类型
java语言是一种强类型语言,所有数据必须指定类型,指导jvm运行时如何分配内存空间.
基本数据类型
java提供8种基本类型,便于操作 直接使用关键字声明,结构简单.
int a = 10;
引用数据类型
除了8种基本类型以外都是引用类型. 类作为类型可以看做是复合类型,结构复杂.
类,接口(interface),数组
String s = “abc”; cahr[]={a,b,c}
基本数据类型
数值型
整数
byte 1
short 2
int 4
long 8
浮点
float 4
double 8
布尔型
true false
字符型
char 2字节 单个字符
编码表
ASCII GBK Unicode(底层计算机存储) utf-8(文件中存储,网络传输时) 一个英语占1字节 中文占3字节
char 可以参与算数运算
基本数据类型转换
java的8种基本数据类型,除了布尔型外,其余7种之间可以相互转换.
默认转换:
容量小的 转向 容量大的 可以直接转换 因为大容量完全可以装得下小容量
byte,short,char < int < long < float <double
(byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型)
public static void main(String[] args) {
byte b = 127;
int i = b;
long a = i;
float f = a;
double d = f;
}
强制类型转换:
容量大的 转向 容量小的
强制类型转换问题:
1.溢出 装不下
2.精度降低
public static void main(String[] args) {
int x = 258;
byte y = (byte)x;
float z = 10.5f;
int n = (int)z;
System.out.println(y);
System.out.println(n);
//注意混合运算时,小容量会自动转为大容量计算
public static void main(String[] args) {
int m = (int)z+x+y;
int m1 = (int)(z+x+y);
char c = 'a'-32;// int --默认转为-> char byte short
System.out.println(c);
}
运算符
算术运算符
算术运算符:+,-,*,/,%,++,–
"+"的三个含义:+ 表示一个正数;加法;字符串相加
public static void main(String[] args) {
/*
-,*,/,% 只能进行算数运算 数值与数值(char)
*/
int a = +5;
String b = "abc";
String b1 = "abc";
int c = 10;
System.out.println(a+b);//字符串+数值(char)
System.out.println(b+b1);//字符串+字符串
System.out.println(a+c);
System.out.println(a-'x');
System.out.println(a-c);
/*
++
--
*/
int x = 5;
//x++; // x=x+1
//++x; // x=x+1
//int y = x++ +2; //x++ 先把x的值赋值给y,在加1
int y = ++x + 2; //++x 先加1后赋值
System.out.println(x);//6
System.out.println(y);//8
}
比较运算符
" == " " != " " > " " < " " >= " " <= "
" == " " !=" 数值与数值(char) 布尔与布尔 引用类型 与 引用类型
> < >= <= 数值与数值(char)
public static void main(String[] args) {
int a=10;
int b=5;
System.out.println(a==b);
System.out.println(a!=b);
boolean c = true;
boolean c1 = false;
System.out.println(c==c1);
System.out.println(c!=c1);
String s1 = "abc";
String s2 = "abc";
System.out.println(s1==s2);
System.out.println(s1!=s2);
System.out.println(a>b);
System.out.println(a>'c');
System.out.println(a>='c');
System.out.println(a<='c');
}
逻辑运算符
逻辑值与逻辑值之间的运算
&—逻辑与 | —逻辑或 ^ —逻辑异或 (还可以参与位运算 数值与数值)
&& —短路与 || —短路或 !—逻辑非
public static void main(String[] args) {
int a = 10;
int b = 5;
int c = 3;
/*
&逻辑与 表达式中有一个false 结果为false,都为true结果为true(有0则0)
*/
/* System.out.println(a>b & b>c);//true & true = true
System.out.println(a<b & ++b>c);//false & true = false
System.out.println(b);*/
/*true
&& 逻辑与(短路与) 表达式中有一个false 结果为false,都为true结果为true
当遇到false 短路 后面的表达式不执行了
*/
//System.out.println(a>b && b>c);//true && true = true
//System.out.println(a<b && ++b>c);//false && true = false
//System.out.println(b);
//System.out.println(a>b | ++b>c);//true | true = true
//短路或 遇到true就短路 后面的不执行
System.out.println(a>b || ++b<c);//true || false = true
System.out.println(b);
//逻辑非 取反
System.out.println(!true);
//逻辑异或 相同为false 不同为true
System.out.println(true^true);
System.out.println(true^false);
}
赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。
扩展赋值运算符: +=, -=, *=, /=, %=
条件运算符
语法:
(条件表达式)? 表达式1:表达式2;
为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;
表达式1和表达式2为同种类型
位运算符
<<:空位补0,被移除的高位丢弃,空缺位补0.
>>:被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1.
>>>:被移位二进制最高位无论是0或者是1,空缺位都用0补.
&:二进制位进行&运算,只有1&1时结果是1,否则是0.
|:二进制位进行 | 运算,只有0|0时结果是0,否则是1.
^:相同二进制位进行 ^ 运算,结果是0;1^1=0,0^0=0.
不相同二进制位 ^ 运算结果是1.1^0=1,0^1=1.
~:正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反.
表达式的运算顺序
控制台输入
使用标准输入串System.in
使用Scanner取得一个字符串或一组数字
在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。Scanner的next()方法用以 取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转 换成布尔型。
例: System.out.print("输入"); Scanner scan = new Scanner(System.in); String read = scan.next (); System.out.println("输入数据:"+read);
在使用Scanner对象时,需要在文件头带入 java.util.Scanner;
写法为: import java.util.Scanner;
流程控制
(1)条件语句
根据不同条件,执行不同语句。
if-else语句
switch语句
package day3;
public class IFDemo {
public static void main(String[] args) {
/*
if-else语句
if条件结构是根据条件判断之后再做处理
if ( 条件 ) {
语句1
}else {
语句2
}
*/
int a = 70;
if (a > 70) {
System.out.println("成绩良好");
} else if (a > 60) {
System.out.println("成绩及格");
} else
System.out.println("成绩不及格");
/*
switch语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个。
switch (表达式){
case value1: 语句序列1;
[break];
…………
case valueN: 语句序列N;
[break];
[default : 缺省语句;]
}
表达式可以是byte、short、int、char、枚举类型。JDK 7以后,可以使用String类型
case语句后面只能使用常量表达式;
case后的值不能重复;
使用break语句可以跳出switch语句
*/
int day=0;
switch(day){
case 0:
System.out.println("今天是星期天");
break;
case 1:
System.out.println("今天是星期1");
break;
case 2:
System.out.println("今天是星期2");
break;
default :
System.out.println("日期不对");
}
/*
如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型,if-else语句
语、与switch语句都可以使用,建议使用switch语句,因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if语句,if语句的使用范围更广
*/
}
}
循环语句
在某些条件满足的情况下,反复执行特定代码的功能。
循环语句由四部分组成:循环变量的初始化、循环条件部分、循环体部分、循环变量的更新。
while循环
do/while循环
for循环
package day3;
public class WhileDemo {
public static void main(String[] args) {
/*
while循环 形式如下:
while(逻辑表达式){
语句;
}
执行过程:
先判断逻辑表达式的值。若为true,则执行其后面的语句,
然后再次判断条件并反复执行,直到条件不成立为止。
*/
int i=0;
while(i<5){
System.out.println("挣钱买摩托"+i);
i++;
}
/*
do/while循环 形式如下
do {
语句;
} while(逻辑表达式);
执行过程:先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则循环结束
*/
int a=0;
do{
System.out.println("今晚吃香锅"+a);
a++;
}while(a<5);
}
}