命令提示符(cmd)
进入文件夹:cd 文件夹名
返回上一级:cd…
直接返回根目录:cd \
查看当前内容:dir
清屏:cls
退出:exit
//是单行注释
多行注释以/*开头,\
以*/结尾,不能嵌套
Java程序的开发步骤:
- 编写代码:要求:保存为.java的源代码文件
- 编译代码:目的:把.java源文件编译为.class的字节码文件(英文JVM只认识字节码)
- 编译工具:javac.exe(编译成class文件)
- 例如:javac HelloWorld.java
- 运行字节码文件:运行工具:java.exe
- 格式:java 字节码文件名或说是类名
- 例如:java HelloWorld
-
java的代码结构:
类{ 方法{ 语句; } }
-
class:类,声明类,定义类
-
Java程序的主方法,是Java程序运行的入口
class HelloWorld{ public static void main(String[] args){ System.out.println("Hello Java") } }
大小写问题
源文件名.java的大小写问题
- 源文件名不区分大小写,但是没用,我们必须注意大小写
字节码文件名(类名)
- 严格区分大小写的
代码中大小写问题
- 严格区分大小写
如果某个类是public,那么这个类必须与源文件名一致。
一个源文件只能有一个public类
一个源文件可以编写多个类吗?如果可以,编译后会怎么样?
如果一个源文件有多个类,那么编译后会产生多个.class文件(字节码文件)(而且字节码文件名就是类名)执行的时候就是 java 类名
平时开发中,一个.java文件,只写一个类,除非有内部类。
而且源文件名和类名一致(因为后期好维护)
标识符
在java当中对类名,变量名,方法名等这些要素进行命名的字符序列被称之为标识符。(凡是程序员自己命名的地方都叫标识符)
标识符的命名规则
- java的表示符必须用26个英文字符的大小写,数字0-9,美元$,下划线_
- java的表示符不能使用关键字(包含保留字)和特殊值
- 不能使用空格,数字不能开头
- java的标识符严格区分大小写
标识符的命名规范
- 见名知意(有描述性)
- 类名,接口名等:要切每一个单词的首字母大写,形式XxxYyyZzz
- 变量名,方法名:等要求从第二个单词开始,首字母大写,其余字母小写,形式:xxxYyyZzz
- 包名等:要求所有单词都小写,每个单词之间使用.分割,形式:xxx.yyy.zzz
- 常量名:要求所有单词都大写,每个单词之间用_分割,形式:XXX_YYY_ZZZ
变量
变量第二次赋值不用再加数据类型(不用再声明了)
作用域:从变量声明处开始,到他所属{}后结果
说白了,这里和python不一样,和易语言一样,作用域就是局部变量的局部,出了这个局部就找不到了
刚开始常用的数据类型:
- int(整数)
- double(小数)
- char(单个字符)
- String(字符串)
String s = "ziqing"; //字符串String里的S必须大写,字符串是双引号
char a = 'z'; //单个字符,字符是单引号
double weight = 55.8; //小数,不用加符号
boolean marry = false; //布尔,不用加符号
基本数据类型
超出数据范围报错
说明:对于long类型的常量,后边需要加大写L(建议用大写)或小写l
long tel = 15192780339L
float是小数点后6~7位
double是小数点后15~16位
说明:对于float类型的常量,后边需要加大写F(建议用大写)或小写f
float num = 1.2F
char:单字符类型,2个字节,可以表示汉字
在java中是使用Unicode编码来表示。(兼容ASCII码)
引用数据类型
类 (class)
接口 (interface)
数组 (array)
在java中是使用Unicode编码来表示。(兼容ASCII码)
例如:
数字0:Unicode编码值是48
数字1:Unicode编码值是49(以此类推)
…
字母A:Unicode编码值是65
字母B:Unicode编码值是66
…
字母a:Unicode编码值是97
字母b:Unicode编码值是98
自动类型提升运算
核心思路就是小数据类型转到大数据类型
byte、char、short --> int --> long --> float --> double
当byte、char、short三种数据类型的变量运算时,结果为int类型
byte num1 = 18;
int num2 = 2530;
int val = num1 + num2; // num2+num1 Java编译器会吧这里数据类型处理为一个int类型
System.out.println(val);
char c1 = 'a'; // 对应97
int num = 10;
int res = c1 + num;
System.out.println(res); //结果为107,int类型
long l = 123213;
System.out.println(l);
// 这个long类型,后边没加L,也不会报错,会被当做int型
// 相当于把和这个int赋给这个long,自动类型提升了
强制类型转换
核心思路就是较大数据类型转换为小数据类型
double num = 12.9;
int num1 = (int)num; //强制转换 ,属于截断操作,不会四舍五入
System.out.println(num1); //结果为12
int num = 128;
byte num2 = (byte)num;
System.out.println(num2); // 结果为-128 精度丢失
// 强制类型转换,有利有弊:
利:
可以满足数据类型一致化
弊:
基本数据类型强制转换过程中,会导致数据精度丢失,而这样的丢失是不可逆转的
关于进制
-
所有数字在计算机底层都以二进制形式存在。
-
对于整数,有四种表示方式:
- 二进制:0,1,满2进1 (以0b或0B开头)
- 十进制:0-9,满10进1
- 八进制:0-7,满8进1 (以0开头表示)
- 十六进制:0-9及A-F,满16进1 (以0x或0X开头表示)此处A-F不区分大小写
原码-反码-补码
规定:
- 正数的原码,反码,补码三码合一
- 负数的原码,反码,补码是不同的
- 因为计算机中把最高为(最左边的二进制位)定为符号位,0表示正数,1变数负数。
25:
- 原码:0001 1001
- 反码:0001 1001
- 补码:0001 1001
-25:
- 原码:1001 1001
- 反码:1110 0110 符号位不变,其余为取反
- 补码:1110 0111 在反码上加1