测试一下自己 ~
System.out.println(10%-3);
System.out.println(-10%-3);
System.out.println(-10%3);
1.每条语句用英文符号(;)结束,注意,用中文字符时编译出错。这是个易错又不容易发现的地方!
2.一个连续的字符串不分拆分成两行,如果不得不拆的情况下要写成两个字符串,并用加号(+)连接起来
3.注释: // 这是单行注释
/* 这是多行注释*/ !多行注释可以嵌套单行注释
/**
*Title: Tset类
*这是文档注释
*/
4.关键字50个 ,一般都是小写。
abstrac assert boolean break byte case catch char class
const continue default do double else enum extends final float for goto if implement import instanceof int interface long native new package privare protected public return strictfp short static super switch synchronized this throw whrows transient try void volatile while
5.标识符:由美元、下划线、数字、字母组成。
命名建议:包名一律用小写如,com.itheima.example
类名和接口名首字母大写如ArrayList 、Iterator
常量都大写:DATE_OF_TODAY
变量名和方法名第一个单词字母小写,第二个单词开始大写
尽量用有意义的单词来表示命名,尽量避免拼音
错误命名:数字开头
变量名中带有空格
变量命名用小驼峰,类名用大驼峰
6.boolean变量的值只有两个,true 和 false ,和c不同,在Java中不能 用0表示false,用正整数表示true,boolean的变量大小不确定,在有的JVM中是一个字节,而有的JVM中是1bit
7. 拼接
System.out.println("hello"+10+20); //hello1020
System.out.println(10+20+"hello"); //30hello
System.out.println("hello"+ //拼接
"world!");
需要注意的是,图中的默认值是针对成员变量的,局部变量还是要初始化滴 否则,报错~~
8.变量分为成员变量和局部变量
- 局部变量:方法体{}中、形参、代码块{}中
- 成员变量:类中方法外
- 类变量:有static修饰
- 实例变量:没有static修饰
9.常量
1.字面常量
2.final修饰的变量,此处跟C语言中const修饰的常变量不同,c中const修饰的变量理论上还是变量,还能通过指针改变变量的值,而在Java中,final修饰的就是常量,常量在编译的时候就确定其值了,变量的值要在运行的阶段才能确定,这也是为什么会出现强制类型转换的原因之一。
final变量在编译的时候就确定其值,在运行时就不可修改了,且只能赋值一次。
10;
'a';
final int a = 10;
System.out.println(10);
10.自动类型转换、强制类型转换
public class Tset {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
//byte c = a + b;
System.out.println(c); // 编译报错
// Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会
//有损失,byte c = a + b;
//正确写法
byte d = (byte)a+b;
int a = 20;
long b = 1000L;
//b = a; //将小类型变量赋给大类型变量可以编译通过
//a = b; //将大类型变量赋给小类型变量可以编译不通过
System.out.println(b);
boolean d = false;
int c = 34;
c = (int)d; //boolean不能和其他类型转换
d = boolean(c);
}
为什么会出错呢?
在上述代码中,a和b都是相同类型,但在计算a+b时会将a和b提升为int类型,再进行计算,得到的结果也是int类型,将这个int类型的值赋给c,程序报错。
在java中,如果其类型小于4个字节,那么会将其转换成int类型再进行计算,如果不同类型的数据混合运算, 范围小的会提升成范围大的,再进行计算。
//int转String
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);
//String转int -> 用函数‘
String str = "100";
int num = Integer.parseInt(str);
在整形提升时有个体例,如下代码,在编译s+=9时程序并不会报错,这是因为在计算+=时,java自动实现类型提升了~~,在使用+=、-=、*=、/=、%=运算符进行赋值时,强制类型转换会自动完成,程序无需做任何显示的声明。
short s = 10;
//s = (short) (s+9);
s += 9;
System.out.println(s);
11.包装类
8基本数据类型的plus版本,是将8中数据类型封装成类,在类中有许多写好的函数,方便程序员直接引用。int的包装类为Integer,char的包装类为Character,其他都是首字母大写..
12.运算符
这里有两个要注意的:
1.除法的除数不能为0,否则抛出异常,程序报错
2.取模是可以对浮点数进行操作的如 1.5% 1 = 1.5 这点和C语言存在明显区别!
13.关系运算符
关系运算的返回值只有true、false两个值。
14.逻辑运算符
注意:逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean
逻辑与&&:当两个操作数结果都为true时,这个表达式结果才为true
逻辑或| | :当两个操作数结果有一个为true时,这个表达式的值就为true
逻辑非 !:此表达式结果与操作数的值相反
!!&&和| | 的特性:短路特性
15.位运算符
& | ~ ^
注意:当操作数为 boolean 的时候, 表示逻辑运算
16.位移运算符号
<< >> >>>
左移符号<<:二进制向右移动,左方补零
右移 >>: 最右侧位不要了, 最左侧补符号位
无符号右移 >>>: 最右侧位不要了, 最左侧补 0
没有无符号右移!!
17.条件运算符