java 基础笔记
java学习笔记:
2018-02-27(1-2,3-4)
一、java简介
1.java有三个版本(javaSE javaEE javaME 分别代表标准Standard Edition Enterprise Edition Micro Edition 标准 企业 微型)
二、java配置
2.直接下载eclipse安装,使用eclipse
三、java基本语法
3.编写java时需要注意:(1)大小写敏感;(2)所有的类名首字母都要大写,里面的单词应该大写;(3)所有的方法名首字母大写,里面有单词的首字母大写;(4)源文件名必须和类名相同;(5)主方法入口‘public static void main(String []args)’;
4.标识符注意:(1)所有的标识符都应该以四大金之一组成(大写字母,小写字母,美元符,下划线);(2)首写之后可以任意加六个无赖(大写字母,小写字母,美元符,下划线,数字和其他字符);(3)特殊符不能做标识符;(4)大小写敏感;
5.修饰符:(1)访问控制修饰符(default,public,protected,private)分别是未履行的,共有的,受保护的,私有的;(2)非访问控制修饰符(final,abstract,strictfp)最后,抽象,严谨
6.java变量:局部变量,类变量(静态变量),成员变量(非静态变量)
7.超类:被继承的类,派生类:子类
8.接口:接口是对象之间相互通信的协议
四、java对象和类
9.java类的创建
public class Dog{
String breed;
int age;
string color;
void barking(){
}
void hugry(){
}
void sleeping(){
}
}
10.类包含的变量:局部变量,成员变量,类变量
局部变量-> 方法中声明的变量
成员变量-> 方法之外,类之内
类变量-> 也是在类之内,但是必须声明static
11.构造方法:(1)每个类都有构造方法;(2)构造方法的名称必须与类同名;(3)一个可以有多个构造方法
示例:
public class Puppy{
public Puppy(){
}
}
12.创建对象
主要分为三步:声明,实例化,初始化
声明:声明一个对象,包括对象名称和对象类型
实例化:使用关键字new创建对象
初始化:使用new创建对象时,会调用构造方法初始化对象
示例:
public class Puppy{
public Puppy(String name){
System.out.println("小狗名字" + name);
}
public static void main(String []args){
Puppy myPuppy = new Puppy("tommy");
}
}
13.访问对象的变量和方法
ObjectReference = new Construction();
ObjectReference.variableName;// 访问变量
ObjectReference.MethodName();// 访问方法
14.java中使用到“void”,java语言是强类型的,方法的定义必须有返回值,使用了void表示返回的是空,java中只有两种数据类型一种是基本型,一种是引用型。
基本型数据类型有8种,byte short int long float double char boolean
Java八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
15.源文件声明规则:(1)一个源文件只能有一个public类;(2)一个源文件可以有多个非public类;(3)源文件的名称一定要和public的类保持一致;(4)如果一个类定义在某一个包中,那么package语句要写在源文件的首行;(5)如果源文件包含import语句,那么应该放在package语句和类之间,没有package语句,那就写在源文件的最上边
2018-02-28(5-6)
五、Java基本数据类型
16.java的两大数据类型:内置数据类型、引用数据类型;
17.内置数据类型:主要有八种,byte short int long float double boolean char 四个整数型,两个浮点型,一个字符,一个布尔型
18.常量的命名方法:final double PI = 3.14;(常量通常使用大写)
19.int byte long short 都可以使用十进制 16进制 8进制
int decimal = 100;
int octal = 0144;
int hexa = 0x64;
前缀使用0 表示 8 进制;前缀0x 代表 16 进制;
20.自动类型转换
int i = 128;
byte b = (byte)i; 大容量转换成小容量会存在精度丢失;
浮点数到整数的转换是舍去小数,不是四舍五入
(int)23.7 == 23;
自动类型转换 转换前的数据类型的位数要低于转换后的数据类型;
强制转换类型,条件是数据类型必须兼容;
21.隐含强制类型转换
整数的默认型是int
浮点型不存在这种情况,因为定义的时候必须在数字后面跟上F或者f
六、Java变量类型
22.java中所有的变量在使用前都必须声明。格式:类型 识别符号 值
23.java语言支持的变量类型:类变量、实例变量、局部变量
类变量:独立方法之外,用static修饰
实例变量:独立方法之外,不使用static修饰
局部变量:类的方法中的变量。
八、Java修饰符
24.Java有:访问修饰符,非访问修饰符;
25.Java中的访问控制修饰符:default(缺失的) private(私有的) public(公有的) protected(受保护的)
26.私有访问修饰符-private:最严格的修饰符号,类和接口不能声明private;
27.共有访问修饰符-public:类,方法,构造方法和接口能被任何其他类访问,java中main()方法必须设置成共有的,否则java解释器将不能运行该类。
28.受保护的访问修饰符-protected
29.能被同一个包的任何其他类访问,也能够被不同包中的子类访问。
30.protected 访问修饰符号不能修饰类和接口,可以修饰方法和成员变量。
31.非访问修饰符
30.static 和 final 修饰符。
31.static 修饰符用来修饰方法和类变量。
32.final 又来修饰类、方法和变量,final修饰的类不能够被继承,不能被重新定义,修饰的变量为常量。
33.abstract 修饰符
抽象类:
抽象类不能实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充;
一个类不能同时被abstract和final修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编码错误。
34.抽象方法:
(1)抽象方法是一种没有任何实现方法
2018年3月1日
九、java运算符
计算机的最基本用途就是执行数字运算,作为一门计算机语言,java也提供了一台丰富的运算符来操作变量,我们可以把运算符分成以下几种:
算术运算符
关系运算符
位运算符
逻辑运算符
赋值运算符
其他运算符
算术运算符
算术运算符用数字表达式中,它们的作用和在数字中的作用一样
关系运算符
== ,!=,>,<,>=,<=
位运算符
按位与(&)
同为1时,结果为1,其余全为0.
按位或(|)
同为0时,结果为0,其余全为1
按位非(~)
1变0 , 0变1
按位异或(^)
相同为0,不同为1;
左位移(<<)
左移2位,溢出截掉,低位补0
右位移(>>)
无符号右移(>>>)
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
逻辑运算符
&& || !
短路逻辑运算符
当使用逻辑与运算符的时候,两个操作都为true,结果为true,但当第一个为false时,这时就不用判断第二个。
赋值运算符
= 简单运行符
+= 加和赋值符
-= 减和赋值符
*= 乘和赋值符
/= 除和赋值符
(%)= 取模和赋值符
<<= 左移位赋值运算符
= 右移位赋值运算符
&= 按位与赋值运算符
^= 按位异或赋值操符
|= 按位或赋值操作符
条件运算符(?:)
也叫三元运算符
variable x = (expression) ? value if true : value if false
得到的值 = 判断 ? 为真的值:为假的值
instanceof 运算符
( Object reference variable ) instanceof (class/interface type)
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
java 运算符号的优先级
十、Java 循环结构
java 循环结构 一般只有 for while 及do……while 循环
循环结构只能一次执行,想要执行多次就需要使用循环结构
while 循环
while(){
}
do……while 循环
即使不满足条件也执行一次
do{
// 代码语句
}while();
for 循环
for(){
}
break 关键字
主要用于循环语句或者switch语句,用来跳过整个循环语句块;
break跳出最里层的循环,并且继续执行循环
continue 关键字
作用是让程序立即跳转到下一次循环的迭代
for循环中continue语句使程序跳到更新语句;
while 或者 do……while循环中,程序立即跳到布尔表达式的判断语句;
java 分支结构 if……else switch
java中的分支结构有两种if……else switch
if语句:
if(){
}
if……else
if(){
// 如果布尔表达式的值是true
}else{
// 如果布尔表达式的值是false
}
if……else if……else
if……else if……else检测多种可能的情况
if(){
// 表达式
}else if(){
// 表达式
}else if(){
// 表达式
}else{
// 表达式
}
switch 语句
switch 语句判断一个变量与一系列值中是否相等,每一个值称之为一个分支。
switch(){
case value:
// 语句
break;
case value:
// 语句
break;
// 都没有的情况
default:
// 语句
}
Java Number & Math
java中通常使用内置数据类型,但是实际中我们可以使用数据包
public class Test{
public static void main(){
Integer x=5;
x=x+10;
System.out.println(x);
}
}
// 当x被赋为整形值的时候由于x是一个对象,所以编辑器要对x进行拆箱
java math 类
java的math包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
math的方法都被定义为static形式,通过math类可以在主函数中直接调用
Number & Math 类方法
http://www.runoob.com/java/java-number.html
第十三节 Java Character类
Character 类用于对单个字符进行操作
Character 类在对象中包装一个基本类型char值
第十四节 Java String 类
Java String 类,创建和操作字符串
连接字符串“+”
String 方法
第十五节 java StringBuffer和StringBuilder类
Java Stringbuilder 有速度优势,但不能使用多线程,Java StringBuffer 进行多线程的时候使用。
public StringBuffer append(String s) 指定的字符串追加到字符序列的后面
public StringBuffer reverse() 字符串使用反转形式取代
public delete(int start,int end) 移除此序列的子字符串中的字符
public insert(int offset,int i)将int参数的子字符串表示形式插入此系列中
replace(int start,int end,String str)使用给定的Sting中的字符替换序列的子字符串中的字符。
第十六节 java 数组
声明数组变量
必须声明数组的变量,才能在程序中使用数组
方法一:
dataType[] arrayRefvar ; // 首选方法
方法二:
dataType arrayRefVar[] ;
实例:
double[] myList ;// 首选方法
double myList[] ;
创建数组
java 语言使用new操作符来创建数组
arrayRefVar = new dataType[arraySize];
上面的语法做了两件事
第一 使用dataType[arraysize] 创建一个数组
第二 把新创建的数组引用赋值给变量arrayRefVar
dataType[] arrayRefVar = new dataType[arraySize] ;
还可以:
dataType[] arrayRefVar = {value0,value1,……,valuek};
Arrays 类
第十七节 Java 日期和时间
java.util包提供了Date类来封装当前日期和时间
// Date 对象创建以后,可以调用下面的方法
boolean after(Date date)
当调用此方法的Date对象在指定的日期之后返回true,否则返回false
boolean before(Date date)
若当调用此方法的Date对象在指定日期的前面返回true 否则返回false
Object clone()
返回此对象的副本
int compareTo(Object obj)
比较调用此方法的Date对象和指定日期,两者相同返回0,调用对象在指定日期之前则返回负数,调用对象在指定日期之后则返回正数。
boolean equals(Object date)
当调用此方法的Date对象和指定日期相同时候返回true,否则返回false。
long getTime()
返回自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数
int hashCode()
返回此对象的哈希码
void setTime(long time)
用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
String to String()
把Date对象转换为形式
测量时间
获取当前时间,然后Sleep,再次打印,求两者之间的查;
Calendar类
// 创建一个代表系统当前日期的Calendar 对象
Calendar c1 = Calendar.getInstance();
// 创建一个指定日期的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009,6,-1,12);
Calendar类
import java.util.*;
public class GregorianCalendarDemo {
public static void main(String args[]) {
String months[] = {
"Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"};
int year;
// 初始化 Gregorian 日历
// 使用当前时间和日期
// 默认为本地时间和时区
GregorianCalendar gcalendar = new GregorianCalendar();
// 显示当前时间和日期的信息
System.out.print("Date: ");
System.out.print(months[gcalendar.get(Calendar.MONTH)]);
System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
System.out.println(year = gcalendar.get(Calendar.YEAR));
System.out.print("Time: ");
System.out.print(gcalendar.get(Calendar.HOUR) + ":");
System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
System.out.println(gcalendar.get(Calendar.SECOND));
// 测试当前年份是否为闰年
if(gcalendar.isLeapYear(year)) {
System.out.println("当前年份是闰年");
}
else {
System.out.println("当前年份不是闰年");
}
}
}
Java 正则表达式
//简单的正则表达式
this is text // 匹配字符串“this is text”
this\is+is\s+text // this后面匹配多个空格(\s+),之后匹配is字符串,再匹配多个空格(\s+),最后加上text
^\d+(\.\d+)? // ^ 定义了以什么开始 \d+ 匹配一个或多个数字 \. 匹配 "." ? 设置括号内的选项是可选的
后面添加数字,加点带数字或者不加带数字都行
捕获组
正则表达式语法
替换方法
start 和 end 方法
matches 和 lookingAt 方法
replaceFirst 和 replaceAll 方法
appendReplacement 和 appendTail 方法
第十九节
java 方法
System.out.println()
println() 方法 System 系统方法 out 标准输出对象