环境变量配置 path值下追加;(分号)+JDK/bin的路径
JAVA_HOME 配置 值下追加JDK路径
// 单行注释
/*内容*/ 多行注释
/**内容*/ 文档注释
JDK(Java开发工具包)Java语言编译运行过程先伪编译转换字节码在解释
JRE(Java运行环境)JVM(Java虚拟机)
1字节,2字节,4字节,8字节
数值型:整数型(byte,short,int,long)
浮点型(float,double)
基本数据类型 4字节,8字节
字符型(char) 和 布尔型(boolean)
Java的数据类型 2字节
引用数据类型 类(Class),接口(interface),数组
Java的字符集使用Unicode字符集
变量命名规范
字母下划线或者美元符开头
没有长度限制对大小写十分敏感不能以关键字命名
boolean型的值有两个true(真)false(假)
long和float的声明规范
long l = 3L;long l = 3l;
float f = 3F;float f = 3f;
范围关系
byte < short < int < long < float < double 表达式中出现char short byte int时自动转型到int
算术运算符:+ , - , * , / , %(求余) ,++(i++就是 i = i + 1), --(i--就是 i = i - 1)
关系运算符:> , < , >= , <= , ==(等于) , !=(不等于)
布尔逻辑运算符:!(非),&(逻辑与),|(逻辑或),^(逻辑异或), &&(短路与),||(短路或)
赋值运算符:=(在Java中一个等于号是赋值的意思)
扩展赋值运算符:+=(i += j就是i = i + j),-=(i -= j就是i = i - j)
if判断语句
if(布尔类变量或表达式){....}用来判断一个问题
基本数据类型用==来比较,String类用.equals("比较的内容")
if(布尔类变量或表达式){....}else if(布尔类变量或表达式){....}
如果if为假的时候执行else if ,如果有多个else if 也是一样 上面为假执行下面
if(布尔类变量或表达式){....}else{....}
如果if为假就执行else的内容
switch判断语句
switch(表达式)这里的表达式类型只能有5种 byte ,short ,int ,char ,String(1.7版本后才支持的)
switch(表达式或者一个值){
case 常量1 :
语句;
break;
case 常量2 :
语句;
break;
case 常量3 :
语句;
break;
……
default:
语句;
会自动判断里面的常量 如果有匹配的就执行他的内容如果没有匹配的
则执行default的内容每个判断语句后面必须要加break不然会顺序往下
输出内容语句。
for循环语句
1.赋值 2.判断 4.循环控制 3.执行内容
for(int i = 0;i < 10 ;i++){....}
可以有多个变量,可以有多个条件,可以有多个循环控制
while循环语句
1.先判断 2.执行内容 3.在判断 就是这样循环的直到判断
while(布尔类表达式或布尔类值){....} 为false停止循环
do……while循环语句
1.先执行 2.在判断
do{....}while(布尔类表达式或布尔类值)
数组
动态赋值:类型 数组名[] = new 类型[]
静态赋值:类型 数组名[] = {初值0……初值n}
数组的索引是从0开始的
数组长度的取得可以通过 数组名.length 来返回一个int型的数值来确定有多少数组
Arrays.sort(数组名)这个方法可以用来给数组排序(升序)
Scanner扫描器 和Random随机数类
变量的作用域,看离他最近的{}(大括号)
break;可以用来结束循环
continue;可以用来循环中的判断来结束一次循环
所有引用数据类型的初始值都是null(空)
foreach循环
for(类型 i:数组名){打印i遍历数组} 中间是冒号不是分号
字符串(String)
字符串的值是不可修改的
.toUppercase();产生一个新的大写字符串
.toLowercase();产生一个新的小写字符串 两个都对中文无效
.equalsIgnorecase("字符串"); 无视大小写比较内容
.concat("字符串");链接字符串和+作用相同
.split("符号");用来分割字符串 出来的结果是个数组类型 需要用String数组类承载
创建一个字符串时可以new 但是不会生成缓存
.indexOf("需要查找的字符");查找第一个这种字符在第几个位置返回一个int类
.lastindexOf("需要查找的字符");查找最后一个这种字符在第几个位置返回一个int类
.contains("字符串");判断是不是包含
.endswith("字符串");以什么结尾判断
.startswitch("字符串");以什么开头判断 3个都返回boolean类的值
.subString(位置数,位置数);截取字符串包含第一个位置,不包含第二个位置
.replace("要替换的字符串","拿这个字符串替换"); 用来替换字符串
StringBuffer增强版的字符串 必须要实例化 不能用+来链接
.append(字符串)追加字符串
.length()字符长度
.capactity()容量
.insert(位置,字符串);插入字符串
.delete(位置,位置);从第一个到第二个位置删除字符串
.reverse();反转字符串
StringBuffer追加完一般需要用toString方法转成String类型
面向对象
1.面向对象是一种编程方法
2.面向对象是一种思维方式
3.面向对象不是一种编程语言
4.掌握一门面向对象编程语言
5.掌握面向对象的思维方式
6.熟悉面向对象的设计原则(消除重复代码)
7.面向对象分析(你看他是什么?类)(你看他有什么?属性)(你看他能干什么?方法)
知道类里面有什么
Class 类名{
属性;也叫成员变量主要描述类的状态
方法;也叫成员方法主要描述类的行为
}
实例化类的方法
类名 对象名(自定义) = new 类名()(构造函数);
对象的使用方法
1对象名.变量;
2对象名.方法();
匿名对象
new 类名().变量或者方法();
方法的重载
1.发生在同一个类当中
2.函数名相同
3.参数列数不同
4.方法的修饰符可以不相同
构造函数
构造函数不算成员变量或方法
1.构造函数的名字必须和类名相同
2.构造函数没有返回值类型的定义
3.如果没有构造函数在创建类的时候Java会自动帮你生成一个无参空的构造函数
封装private
用private关键字来声明一个属性是私有的
继承extends关键字
使用继承的目的是为了减少重复代码
继承的语法子类可以得到父类的成员变量和成员方法,还可以有自己的变量和方法
Java的一切类都继承Object类
super关键字可以用来调用父类的方法也可以调用父类的构造函数
多态
多态的前提是继承重写方法
“=”左边叫编译时类型
“=”右边叫运行时类型
final关键字
1.声明常量时候 用final声明的属性是无法改变值的
2.final修饰方法不能被重写可以被重载
3.final修饰类不能被继承可以被实例化
this关键字的使用
this是指本对象(一般来说是指本类的东西,后期可以加深理解)
this可以调用成员变量也可以调用成员方法
如果想调用本类其他构造函数的参数可以用
this(参数)的方式在构造函数中调用切必须是构造函数的第一条语句
static关键字的使用(静态声明)
1.可以声明变量
2.可以声明方法
3.也可以声明类
4.被静态声明的方法和变量可以直接通过 类名.方法或者变量 的形式来调用
5.在静态方法中不能使用非静态的成员变量,也不能使用this
abstract关键字
1.修饰类的话是抽象类不能被实例化
2.修饰方法的是抽象方法 抽象方法 没有方法体 作用就是被子类重写
3.不能修饰属性
4.抽象类不一定有抽象方法也可以非抽象的方法
5.有抽象方法的类必须一定是一个抽象类
6.抽象类天生就是当爹的
接口interface关键字 和实现接口implement关键字
1.实现接口是放在继承的后面的
2.接口是个纯抽象类
3.接口只能有抽象方法
4.接口可以有属性 但是默认是public static final 的属性
5.接口描述的是一种行为
6.多态可以发生在接口实现关系里
异常
Exception
Error错误 程序员对此一般无能为力
运行时异常:RuntimeException
受检异常:CheckedException
try{....}catch(异常类 变量名e){....}finally{....}
try监视一段代码
catch如果发生了这个异常怎么处理
finally处理完这个异常后清理现场
throw抛出异常
throws声明异常
e.getMessage();可以接受抛出异常的参数
包装类
将基本数据类转换成引用数据类型
int在这里的引用数据类型是Integer
char在这里的引用数据类型是Character
其他基本数据类型都是首字大写
将引用数据类型转基本数据类型
对象.类型value();的方法
自动装箱(autoboxing)
Integer iter = 5;
自动拆箱(autounboxing)
Integer iter = new Integer():
int i = iter;
Integer会将-128~127之间的数进行缓存
把字符串转成数值
Integer.parseInt("123");返回一个int类型
把基本数据类转字符串
String.valueOf(基本数据类型);返回一个String类型
Date类时间类
年份从1900年开始获取月份从0星期从0(星期天)
下面是时间类的代码
//Date日期类时间获取
Date dt = new Date();
System.out.println(dt);//现在时间全部获取
System.out.println(dt.getYear());// + 1900年就是你电脑现在的年份
System.out.println(dt.getMonth());//+ 1 就是你电脑现在的月份
System.out.println(dt.getDate());//你电脑现在是几号
System.out.println(dt.getDay());//你电脑现在是星期几
System.out.println(dt.getHours());//你电脑现在是几点
System.out.println(dt.getMinutes());//你电脑现在是几分
System.out.println(dt.getSeconds());//你电脑现在是几秒
System.out.println(dt.getTime());//从1970年到你电脑现在的毫秒
//get获取 set设置
//Calendar日期类时间获取(抽象类没法new)
Calendar ca = Calendar.getInstance();
//Calendar打印对象获取的是toString转换的结果 详细的看API Object类 toString()方法
System.out.println(ca);//打印时ca后面默认是.toString()方法
//Calendar获取电脑当前时间的方法
System.out.println(ca.get(Calendar.YEAR));//你电脑现在的年份
System.out.println(ca.get(Calendar.MONTH));//+ 1 就是你电脑现在的月份
System.out.println(ca.get(Calendar.DATE));//你电脑现在是几号
System.out.println(ca.get(Calendar.DAY_OF_WEEK));//你电脑现在是一周的第几天Java是从星期天开始算的
System.out.println(ca.get(Calendar.HOUR_OF_DAY));//HOUR是12小时制,HOUR_OF_DAY是24小时制
System.out.println(ca.get(Calendar.MINUTE));//你电脑现在是几分
System.out.println(ca.get(Calendar.SECOND));//你电脑现在是几秒
//Calendar set设置的方法是对象.set(你想要修改的常量(年份还是月份之类的格式是Calendar.常量名),需要修改的数值)
ca.set(Calendar.YEAR, 2016);
//DateFormat时间样式设计类(抽象类没法new)
//格式有SHORT,MEDIUM,LONG,FULL设置样式的格式(第一个是日期的格式,第二个是时间的格式,第三个Locale.国家名 是打印Java给出的国家时间显示样式 可以不用)
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.MEDIUM,Locale.US);
Date d = new Date();//获取电脑当前的日期和时间;
//.format(Date类型)是从时间类转字符串的样式
System.out.println(df.format(d));//将当前时间以字符串的形式打印出来
//固定的字母yyyy表示年份 MM月份 dd几号 HH小时 mm分钟 ss秒 E是星期
//SimpleDateFormat自定义时间样式设计类 有构造方法("年份 符号 月份 符号 几号 中间符号用单引号圈起来 小时 符号 分钟 符号 秒)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E '中间字符' HH:mm:ss");
Date d2 = new Date();//获取电脑当前的日期和时间
System.out.println(sdf.format(d2));//当前时间用设置好的格式以字符串的形式打印出来
//字符串String类转日期类
String date = "2016.3.28 14:45:59";//设置一个String的假时间
//这里的格式必须和上面String的格式一样连中间空格都要一样
//()里为空时候默认yyyy-MM-dd HH:mm:ss
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
try {//检测
Date d3 = sdf2.parse(date);//然后.parse转换成一个Date类因为手动抛了个异常过来所以处理一下
//.parse(String类型)是从字符串转成时间类样式
System.out.println(d3);//打印出这个时间
} catch (ParseException e) {//处理
e.printStackTrace();
}
集合类
ArrayList(有序可重复)
<类型>范列强制只能存放这一种类型
.add()增
.remove(索引)从0开始索引 删
.set(索引,内容)改
.get(索引)查
迭代器遍历查询
Iterator it = 集合变量名.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
LinkedList比ArrayList多2个方法
.addFinst("")开头加东西的
.addLast("")尾部加东西的
Set集合是无序不重复的方法大致和List一样
Map(key,value)
key和value一对出现
.put(key,value)增
.remove(key)删
.put(key,value)改
.get(key)查
遍历需要用迭代器来获取全部key
Set s = 集合变量名.keySet();
还有流和swing还有线程方面理解不深就不写了。