第一节:hello world
Demo.class 叫作中间文件或者二进制文件
主函数不是必须的,需要执行就需要主函数。
一个文件中可以有多个类,每个类都可以带一个主函数。
public class Demo //如果加了public,源文件和class文件名必须一致。 { public static void main(String[] args) { System.out.println("hello java"); } }
classpath : 类文件所在路径
环境变量和当前目录中都有class文件,会执行环境变量中的class文件。
临时配置classpath
set classpath = c:\; //先从环境变量中找class文件,找不到,再从当前目录中找 set classpath = c:\ //只从环境变量中找class文件。不在当前目录中找。不加分号比较好,因为加了分号有时会得到意想不到的执行结果。 set classpath = //清空环境变量
注释:
// 单行注释 /**/ 多行注释 /** */ 文本注释 多行注释不能嵌套多行注释。
1、需求:为什么开发这个软件 2、思路:对实现需求的想法 3、步骤:代码实现
标识符
定义标识符的规则:
1、数字不可以开头
2、不可以使用关键字
3、java中严格区分大小写
标识符规范:
包名:所有字母小写 xxxyyyzzz
类名接口名:单词首字母大写 XxxYyyZzz
标量名和函数名:第一个单词首字母小写,第二个单词开始首字母大写 xxxYyyZzz
常量名:所有字母都大写,单词之间用下划线连接。 XXX_YYY_ZZZ
Java中常量的分类:
1、整数常量:所有整数
2、小数常量:所有小数
3、布尔型常量:true、false
4、字符常量:一个数字、字母或者符号用单引号标识的数据
5、字符串常量:用双引号标识的数据
6、null
字节: 8个二进制位代表一个字节
负数二进制: 正的二进制取反,然后加1:
比如-1:1111-1111 1111-1111 1111-1111 1111-1110 然后加1 就是1111-1111 1111-1111 1111-1111 1111-1111
数据类型
定义变量要先定义变量的数据类型==》强类型语言。
byte short int long 占1248个8位
float double 占4、8个8位
字符 占2个8位
一、基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0 long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0 double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0 char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空 boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false
byte与int相加
自动类型转换
byte b = 3 b = b + 3
- 3是一个固定的值,会做一个自动类型转换,转换成byte类型的数据。所以能赋值给byte类型的空间;
- b+2的值可能会超过byte类型的空间的范围,需要将b+2的结果强制转成byte类型,才能赋值给byte类型的空间。
强制类型转换
byte b = 2 b = (byte) (b + 3) //将b+3的结果强制转换成byte类型。
- float 和 int 占4个8位。如果float和int类型的数据进行运算,结果是float
- 字符和数字相加,结果是数字。
- byte类型的值和int类型的值运算会转换成int类型的值。
string和int相加
字符和数字相加 会按照ASSIC码中字符对应的数字 与数字相加:
System.out.println('a'+1); //结果是:98
原因:英文字符占1个8位,数字占4个8位。相加之后字符会提升到4个8位即整数。
运算符:
1、算术运算符
2、赋值运算符
3、比较运算符
4、逻辑运算符
5、位运算符
6、三元运算符
算数运算符:
取模:
左边小于右边,结果是左边
右边是1结果是0
左右相等,结果是0
如果出现负数,结果看左边,左边是负数结果就是负数。左边是正的结果就是正的。
自加自减:
a++ 先赋值再运算
++a 先运算再赋值
int a = 3,b; b = a++; //a先赋值给b之后,再自加1(a=a+1) System.out.println(b); //结果是3 System.out.println(a); //结果是4
字符串连接符 +:
字符串数据和任何数据使用+相连接,最终都会变成字符串。
System.out.println("5+5="+5+5) //结果是"5+5=55"
转义字符:
\ :将特殊含义的字符转义成纯字符。
\n:换行
\b:退格,相当于backspace
\r:按下回车键。Windows系统,回车键是\r\n
\t:制表符,相当于tab键。
赋值运算符:
+= -= *= /= %=
short s = 4; //两者的区别在于,+=会做数据类型的自动转换 s = s + 5; //编译会失败,因为s会提升为int类型运算的结果还是int类型,无法赋值给short。右边的和赋值给左边,做两次运算:先相加再赋值。 s+=5; //编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。左右两边的和赋值给左边。只做一次运算:赋值
逻辑运算符:
java不允许 6 < x < 3 这种表达形式
& // 与 皆true为true,一false为false && // 短路与 左为false,右不运算。 | // 或 一True为true。 || //短路或 左为true,右不算 ! // 非 !true 为假 ^ //异或 两边不同为true。
位运算
2、
ps:因为4位1是15,是16进制中单位最大的数。如果换算成8进制就是每三位(7)对应一个8进制数
怎样将10进制的数变成16进制中的字母:
A对应的ASCII码值是65
三元运算符:
a会被提升成整数,因为他和200一起进行运算
思考:
根据一个整数,获得16进制&15,获得8进制&7,获得二进制&1
代码示例:
class Demo { public static void main(String[] args) { byte x = 127; x = (byte)(x + 10); System.out.println(x); } }
class Demo { public static void main(String[] args) { int x = 4270; x = x /1000 * 1000; System.out.println(x); //结果是4000,x除以1000的结果带小数点,因为x整型,得到的结果也是整型,所以小数点右边的被砍掉了。 } }