预科:基本的Dos命令
打开CMD方式:
- win键+R,输入cmd打开命令提示符
- 开始->window系统->命令提示符
- 在任意的文件夹下,按住shift+鼠标右键打开Powershell窗口
- 资源管理器的地址栏前面加上cmd
- 最高权限,以管理员运行
常用的Dos命令:
#盘符切换
#查看当前目录下的所有文件dir
#切换目录cd change directory
#返回上一级cd..
#清理屏幕cls
#退出终端exit
#查看电脑ip ipconfig
#打开应用:打开计算机(calc)、打开画图工具(mspaint)、打开记事本(notepad)
#ping命令 #ping www.baidu.com
#文件操作
#创建文件夹命令 md 目录名
#新建文档 cd 目录名
#删除文件命令 del 文件名
#移除文件 rd 目录名
Java入门
问题:C&C++----->指针与内存管理
Java(跨平台)的三大版本:
- javase标准版(桌面程序、控制台开发)
- javame嵌入式开发(手机、家电)
- javaee企业级开发(web端、服务器开发)
JDK-->JRE-->JVM(跨平台)
JDK卸载:
- 删除java的安装目录
- 删除JAVA_HOME
- 删除path中java的目录
- java -version
JDK安装:
- 配置环境变量
- 变量-->JAVA_HOME
- 配置path变量
- 测试是否成功安装java -version
第一个程序:HelloWorld
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello,world!");
}
}
-
编译javac java文件,会生成一个class文件
-
运行class文件,
可能遇到的情况:
1. 每个单词的大小不能出现问题
2. 文件名和类名必须保证一致
3. 尽量使用英文
4. 使用了中文符号
java程序运行机制
- 编译型:把一本书直接翻译(操作系统、c/c++)---->编译器
- 解释型:说一句话解释一句话(网页,服务器脚本、java、python)
- 程序运行机制:java源程序( * .java)---->java编译器----->字节码(*.class)----->类装载器----->字节码校验----->解释器----->操作系统平台
使用IDEA开发:集成开发环境idea安装
java基础语法
1.注释、标识符、关键字
注释:单行、多行、文档注释(javaDoc)。
关键字:
标识符:java的所有组成部分都需要名字。类名、方法名、变量名都是标识符。
注意:标识符都以字母A-Z(a-z)、美元符$、或者下划线_开头。
首字母之后可以是任意字符组合
不能使用关键字作为变量名或者方法名
标识符是大小写敏感的
2.数据类型:
(java是强类型语言)--->要求变量的使用要严格符合规定,所有的变量都必须先定义后才能使用。------>安全
(弱类型语言):vb、js
Java的数据类型分为 :
-
基本类型:数值类型(整数类型、浮点类型、字符类型)和布尔类型。
整数类型:byte占1个字节范围:-128-127
short占2个字节范围:-32768-32767
int占4个字节范围:-2147483648-2147483647
long占8个字节范围:-9223372036854775808-9223372036854775807
浮点类型:float占4个字节
double占8个字节
字符类型:char占2个字节
boolean类型:占1位其值只有true和flase两个。
-
引用类型:类、接口、数组
8bit(位)=1B(byte字节)
常见的问题:
(1)整数扩展
//整数扩展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;
int i3 = 0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("=============================");
(2)浮点数扩展(最好完全避免使用浮点数进行比较)
//==================================================
//浮点数扩展? 银行业务怎么表示? 钱
//BigDecimal 数学工具类
//==================================================
//float 有限字长 离散 舍入误差 大约 接近单不等于
//double
//最好完全避免使用浮点数进行比较!!!
float f = 0.1f; //0.1
double d = 1.0 / 10; //0.1
System.out.println(f == d); //应为true,运行结果是false
float d1 = 231313113131131313131f;
float d2 = d1 + 1;
System.out.println(d1 == d2); //应为false,运行结果是true
(3)字符扩展(Unicode编码表)
//字符扩展
System.out.println("==================================");
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
//所有的字符本质还是数字
//编码 Unicode 表:(97 = a,65 = A) 2字节 0-65536 Excel 2^16=65536
//U00000 UFFFF
char c3 = '\u0061';
System.out.println(c3); //a
(4)转义字符
//转义字
// \t 制表符
// \n 换行
System.out.println("Hello\tWorld");
(5)字符串(遗留问题)
System.out.println("================================");
String sa = new String("hello,world");
String sb = new String("hello,world");
System.out.println(sa==sb); //false
String sc= "hello,world";
String sd="hello,world";
System.out.println(sc==sd); //true
//对象 内存分析
(6)布尔值(多用于if语句)
//布尔值扩展
boolean flag = true;
//都是判断flag是否为真
if (flag==true){} //新手
if (flag){} //老手
//Less is More! 精简易读
3.类型转换
低-------------------------------------------------------------------->高
byte--->short--->char--->int--->long--->float--->double
- 运算中不同的数据类型先转化为相同的数据类型,在进行计算
- 高--->低(强制类型转换)、低--->高(自动类型转换)
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题!
- 操作比较大的时候注意溢出问题
public class Demo04 {
public static void main(String[] args) {
//操作比较大的时候,注意溢出问题
//jdk7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int year = 20;
int total = money*year;
System.out.println(total); //-1474836480,计算的时候溢出了
long total2 = money*year; //默认是int,转换之前已经存在问题了?
long total3 = money*(long)year; //把一个数转换为long
System.out.println(total3);
long total4 = (long)(money*year);//-1474836480,计算完再转换还是溢出,要在计算之前转换
System.out.println(total4);
}
}
4.变量、常量
java是一种强类型语言,每个变量都必须声明其类型。
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,和作用域。
注意:
-
(1)每个变量都有类型,可以是基本类型,也可以是引用类型
-
(2)变量名必须是合法的标识符
-
(3)变量声明是一条完整的语句,一次每个声明都必须以分号结束
-
(4)不建议一行定义多个变量。
public class Demo05 {
public static void main(String[] args) {
//int a=1, b=2, c=3;
int a = 1;
String name = "wang";
char x = 'x';
double pi = 3.14;
}
}
变量作用域:
-
类变量:在类中
static int 变量名=值
-
实例变量:在类中
String str = "hello world"
-
局部变量:在方法中
常量:
- 初始化后不能再改变值!不会变动的值。
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名=值;
- 常量名一般使用大写字符。
变量的命名规范:
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary出了第一个单词以外,后面的单词首字母大写 lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则
- 方法名:首字母小写和驼峰原则:run(), runRun()
5.运算符 : 优先级()
- 算数运算符:
+,-,*,/,%,++,--
- 赋值运算符
=
- 关系运算符:
>,<,>=,<=,==,!= instanceof
- 逻辑运算符:
&&,||,!
- 位运算符:
&, |, ^, ~, >>, <<, >>>(了解!!!)
- 条件运算符?:
- 扩展赋值运算符:
+=, -=, *=, /=
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增自减
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,在自增
//a = a + 1;
System.out.println(a);
//a = a + 1;
int c = ++a; //执行完这行代码前,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算
double pow = Math.pow(3, 2);
System.out.println(pow);
}
}
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 与
A|B = 0011 1101 或
A^B = 0011 0001 异或:相同为0,不同为1
~B = 1111 0010 取反
2*8怎么运算最快?
效率极高!!!
<<左移(*2)
>>右移(/2)
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
会发现2、4、8、16左移一位
*/
System.out.println(2<<3);
}
}
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与或非
boolean a = true;
boolean b = false;
System.out.println("a&&b:"+(a&&b)); //逻辑与运算:两个变量都为真,结果采薇true
System.out.println("a||b:"+(a||b)); //逻辑或运算:有true则true
System.out.println("!(a&&b):"+!(a&&b)); //取反
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4); //短路与,若前部分为false则后面代码不执行,直接为false
System.out.println(d);
System.out.println(c);
}
}
package operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b;
a -= b;
System.out.println(a);
//字符串连接符 +
System.out.println("" + a + b); //只要String出现在运算前,后面会进行拼接,转换为String进行连接
System.out.println(a + b + ""); //String 出现在运算后面,先进行运算在拼接
}
}
package operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
// x ? y :z
//如果x==true,则结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
}
}
6.包机制、javaDoc
- 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
package 包名;
-
一般利用公司域名倒置作为包名;
com.baidu.www
-
导入包
import com.kuang.base.Demo01;
package com.kuang.operator;
//导入这个包下所有的类
import com.kuang.base.*;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
// x ? y :z
//如果x==true,则结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
}
}
作业:阿里巴巴开发手册
JavaDos命令
是用来生成自己的API文档的. 查看jdk帮助文档
参数信息:
-
- @author作者
- @version版本号
- @since指明需要最早使用的jdk版本
- @param参数名
- @return返回值情况
- @throw异常抛出情况
package com.kuang.base;
/**
* @author kuangshne
* @version 1.1
* @since 1.8
*/
public class Doc {
String name;
/**
*
* @param name
* @return
* @throws Exception
*/
public String text(String name) throws Exception{
return name;
}
}
生成文档:命令提示符javadoc -encoding UTF-8 -charset UTF-8 Doc.java
作业:学会使用idea生成Javadoc文档!
javadoc配置