dir:列出当前目录下的文件以及文件夹
md:创建目录
rd:删除目录
cd:进入指定目录
cd..:返回上一级目录
cd/:退回到根目录
del:删除文件
exit:退出dos命令行
2,Java语言的特点:跨平台性
什么是跨平台性?答:通过Java语言编写的应用程序在不同系统平台上都可以运行。
原理是什么?答:只要在运行Java应用程序的系统平台上,先安装与平台对于的Java虚拟机(Java Virtual Machine,JVM)即可,由JVM负责Java程序在该系统上运行。
原理图:
3, Java环境搭建:
什么是JDK(Java Development Kit)
开发工具,Javac及基础核心类
运行环境, java及基础核心类
下载、安装JDK(简单,不再赘述);
环境变量的配置:右击“我的电脑”——“属性”——“高级”——“环境变量”——“系统变量”——右击Path——变量值:添加D:\JDK1.6\bin;——确定
注意:最好添加用户变量,因为这样会安全一点, “用户变量”——“新建”——变量名最好取个有意义的,如JAVA_HOME——变量值是JDK安装的目录,例如我的是D:\JDK1.6——确定——“系统变量”——右击Path——变量值:添加%JAVAHOME%\bin;——确定
临时环境配置:dos命令是set path=临时环境目录
Classpath设置:dos命令是set classpath=类文件所在目录
4,JVM运行过程
5,java注释:
单行注释://注释的内容
多行注释:/*注释的内容*/
文档注释:/** 作者:xxx 版本:xxx.xx 功能说明*/
6, Java标识符:
java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。
7, java的关键字-49个
注:java 无sizeof ,goto, const 关键字,但不能用goto const作为变量名
8, java中常量
整型常量:十进制(12) ,十六进制 (0x12),八进制(012)
长整型常量:13L
单精度浮点数:5.1f,.4f ,2e3f ,0f
双精度浮点数 :5.1,.4,2e-3,0d
布尔常量 :true和false
字符常量 :‘a’ , ‘8’, '\u0027'
‘\r‘表示接受键盘输入,相当于按下了回车键;
‘\n‘是换行;
‘\t‘是制表符,相当于table键;
‘\b‘是退格键,相当于Back Space;
‘\‘‘是单引号,而‘\“‘是双引号;
‘\\‘是一个斜杠“\”。
字符串常量 :“Hello World“,”123”, "Welcome \nXXX"
null常量 :null常量只有一个值,用null表示,表示对象的引用为空
9, Java中的变量
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据 。
10,变量字节大小及有效取值范围
1.byte占用一个字节,数字大小为-2^7—2^7-1
2.short占用两个字节,数字大小为-2^15—2^15-1
3.int占用四个字节,数字大小为-2^31—2^31-1
4.long占用八个字节,数字大小为-2^63—2^63-1
5.float占用四个字节,数字大小为1.4E-45~3.4E+38 , -1.4E-45~-3.4E+38 。用二进制的指数形式表示一个浮点数的格式,如:101*22 , 101*2-3
6.double占用八个字节,数字大小为4.9E-324~1.7E+308, -4.9E-324~-1.7E+308 。
7.char占两个字节,数字大小为0—216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。
8.Boolean占一个字节,其取值只有两个,true和false。
注:float与double为什么能表示那么大的范围:
float和double都是遵循IEEE754标准的,内存单元里都是划分为三部分的:符号位 阶码 尾数.
其中:float的符号位占一位,阶码为8位,尾数为23位,所以一共四个字节;double的符号位占一位,阶码为11位,尾数52位.符号位为0的话说明是正的,为1的话说明是负的;阶码就是尾数所要乘以的2的次方数;尾数默认是去掉整数位的1的,也就是说加入尾数序列为01010101(后面还有很多),
那么其实它是1.01010101(后面还有很多).比如一个float类型的变量,其符号位为0,阶码化成十进制为3,尾数为01000000(后面都是0),那
么这个变量化为十进制的话就是1.25*(2^3)=10
int类型占四个字节,但是它不是像float那样表示的,int除了符号位之外其他位都是表示数值的,没有表示阶码的,所以它的范围比float小很多.
11,类型转换
自动类型转换(也叫隐式类型转换)
强制类型转换(也叫显式类型转换)
类型转换的原理及什么时候要用强制类型转换
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。
注意实例小程序
class TransformDemo01 {
public static void main(String[] args) {
int x = 0;
int y = 3;
if (x != 0 && y == y / x)
System.out.println("y = " + y);
}
}
class TransformDemo02 {
public static void main(String[] args) {
byte b = 3;
// b=b+2; //编译错误,java中整形数字默认为int类型,2为int不是byte
b = (byte) (b + 2);
System.out.println(b);
}
}
class TestByte
{
public static void main(String[] args)
{
byte b=3;
//b=b+2; //编译错误,java中整形数字默认为int类型,2为int不是byte
b=(byte)(b+2);
System.out.println(b);
}
}
总结
发生场景
1.赋值
1.1如果等号右边的式子只有常量,则在不超过左边数据范围的情况下,类型不同,会发生自动类型转换
1.2如果等号右边的式子类型比左边式子的类型低,发生自动类型转换
1.3如果等号右边的式子类型比左边式子的类型高,必须使用强制类型转换
1.4实型转整型时,必须使用强制类型转换,转换结果只取实型的整数部分
2.二元运算
2.1两个操作数类型不同时,低类型转高类型,然后再进行运算
2.2运算中如果有变量参与运算,运算的结果如果类型不足int,将自动升级为int
12,运算符
1, 算术运算符:+,-,*,/,%,++,--
2, 赋值运算符:=,+=,-=,*=,/=,%=
3, 比较运算符:==,!=,<,>, <=, >=, instanceof
instanceof检查是否是类的对象
4, 逻辑运算符:&,|,^,!,&&,||
5, 位运算符:<< 左移 >> 右移 >>> 无符号右移
注意1:b=a++; //首先a赋值于b,然后a=a+1
b=++a //首先执行a++,然后将结果赋值于b
注意2,:&&和&的区别
class OperatorDemo01 {
public static void main(String[] args) {
int x = 0;
int y = 3;
if (x != 0 && y == y / x)
System.out.println("y = " + y);
}
}
public class TestAnd
{
public static void main(String[] args)
{
int x=0;
int y=3;
if(x!=0 && y==y/x)
System.out.println("y = "+y);
}
}
上面例子中,由于while语句的判断条件中的第一个布尔表达式是不成立的,程序就不会判断第二个布尔表达式的值,这就是“短路”。如果两个表达式之间用“&”来连接,如果正好碰到上面所示的特殊情况,程序运行时就会出错
注意3,>>和>>>的区别:
class OperatorDemo02 {
public static void main(String[] args) {
int x = 0x80000000;
int y = 0x80000000;
x = x >> 1;
y = y >>> 1;
System.out.println("0x80000000>>1 = " + Integer.toHexString(x));
System.out.println("0x80000000>>>1 = " + Integer.toHexString(y));
}
}
public class ShiftTest
{
public static void main(String [] args)
{
int x=0x80000000;
int y=0x80000000;
x=x>>1;
y=y>>>1;
System.out.println(“0x80000000>>1 = ” + Integer.toHexString(x));
System.out.println(“0x80000000>>>1 = ” + Integer.toHexString(y));
}
}
运行结果如下:
0x80000000>>1 = c0000000
0x80000000>>>1 = 40000000
十六进制与二进的对比
0x80000000 =1000,0000, 0000, 0000, 0000, 0000, 0000, 0000
0xc0000000=1100,0000, 0000, 0000, 0000, 0000, 0000, 0000
0x40000000 =0100,0000, 0000, 0000, 0000, 0000, 0000, 0000
总结:移位运算的注意事项
1, 移位运算符适用类型有byte、short、char、int、long
2, 对低于int型的操作数将先自动转换为int型再移位。
3, 对于int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数。例如:a>>33和a>>1结果是一样的,a>>32的结果还是a原来的数字。
4, 对于long型整数移位时a>>b ,则是先将移位位数b对64取模。
5, 移位不会改变变量本身的值。如a>>1;在一行语句中单独存在,毫无意义 。
6, x>>1的结果和x/2的结果是一样的,x<<2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,
就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y = 1<< x;
注意4,模运算
例程与解释:
class OperatorDemo03 {
public static void main(String[] args) {
// 模运算 %-取余
// Java中模运算是用一个操作数-另一个操作数,直到前面的操作数值小于后一个操作数值为止,
// 10-2.1 ——》7.9-2.1——》5.8-2.1——》3.7-2.1——》1.6,结果为1.6
System.out.println(10 % 2.1);
// Java中,模运算的符号位取决于前一个操作数,不管后一个操作数的符号
// 结构为:前一个操作数的符号 前一个操作数的绝对值%后一个操作数的绝对值
System.out.println(10 % -3); // 1
System.out.println(-10 % -3); // -1
}
}
class OperatorDemo
{
public static void main(String[] args)
{
//模运算 %
//Java中模运算是用一个操作数-另一个操作数,直到前面的操作数值小于后一个操作数值为止,
//10-2.1 ——》7.9-2.1——》5.8-2.1——》3.7-2.1——》1.6,结果为1.6
System.out.println(10%2.1);
//Java中,模运算的符号位取决于前一个操作数,不管后一个操作数的符号
//结构为:前一个操作数的符号 前一个操作数的绝对值%后一个操作数的绝对值
System.out.println(10%-3); //1
System.out.println(-10%-3); //-1
}
}
13,运算符的优先级
正在上传…重新上传取消
转存失败重新上传取消
正在上传…重新上传取消
转存失败重新上传取消
正在上传…重新上传取消
转存失败重新上传取消
正在上传…重新上传取消
14,转义字符
\b为退格键,退格作用,但是不删除字符
\t为制表符每段字符串划分为8位 超过8位或者8位,要重新计算
例程:
class OperatorDemo04 {
public static void main(String[] args) {
// \b为退格键,退格作用,但是不删除字符
System.out.println("0123456\b");
System.out.println("0123456\b1");
System.out.println("0123\b\befg\b12\b\b\b456");
System.out.println("============================");
// \t为制表符 每段字符串划分为8位 超过8位或者8位,要重新计算
System.out.println("王五\t男\t24");
System.out.println("李四\t男\t35");
System.out.println("刘菲菲\t女\t18");
System.out.println("土元飞\t男\t88");
}
}
class ClDemo
{
public static void main(String[] args)
{
// \b为退格键,退格作用,但是不删除字符
System.out.println("abcdefg\b");
System.out.println("abcdefg\b1");
System.out.println("abcd\b\befg\b12\b\b\b345");
System.out.println("============================");
// \t为制表符 每段字符串划分为8位 超过8位或者8位,要重新计算
System.out.println("李超\t男\t23");
System.out.println("张三丰\t男\t99");
System.out.println("赵敏\t女\t16");
System.out.println("藤原拓海\t男\t18");
}
}
cmd编译运行结果为:
基础学习心得总结:
以上这些知识不难,但都是凡学习编程语言必须要掌握的知识,这篇日志记录的几乎是所有编程语言的共性,因为以前用过其它编程语言,
所以这些内容掌握起来还是比较快的,但是值得注意的地方是数据类型的转换和运算符的优先级,都是一些细节方面的东西,即使是有过好多年开发经验的人
也会弄错,特此我列出了一些要掌握的点!