一.Java语言基础
1.基本数据类型
基本数据类型有8种:
(1)数值型:
1)整数类型
整数数据类型在Java程序中有3种表现形式:十进制、八进制(必须以0开头)、十六进制(必须以ox开头)。
数据类型 | 内存空间(8位等于1字节) | 取纸范围 |
byte | 8位 | -128~127 |
short | 16位 | -32768~32767 |
int | 32位 | -2147483648~2147483647 |
long | 64位 | -9223372036854775808~9223372036854775807 |
2)浮点类型
浮点类型表示有小数部分的数字。分为单精度(float)和双精度(double)。
注:默认小数位double型,若使用float型小数,需在后面添加F或f。
(2)字符型
1)char型
储存单个字符,用单引号表示。
如:char x=’a’;(由于字符a在unicode表中顺序位置是97,可写成:char x=97;)
char word=’d’;(在unicode表中顺序位置是:(int)word;)
int p=45213;(在unicode表中第45213位是:(char)p;)
2)转义字符
常用转义字符 | 含义 |
\’ | 单引号字符 |
\\ | 反斜杠字符 |
\t | 空格 |
\n | 换行 |
\r | 回车 |
\b | 退格 |
\f | 换页 |
(3)布尔型:true和false。
2.数据类型转换
(1)隐式类型转换:从低价类型的向高级类型的转换系统自动执行。
类型从精度从低到高排序如下:byte<short<int<long<float<double.
(2)显式类型转换:把高精度的变量赋值给低精度的变量,也叫强制类型转换。
语法:(类型名)要求转换的值
3.变量与常量
在程序执行过程中,其值不能改变的量称为常量,能改变的量叫做变量。
(1)标识符与关键字
1)标识符:用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。
注:Java语言规定标识符由任意的字母、下划线、$和数字组成,第一个字符不能是数字。
标识符不能是Java中的关键字。
2)关键字:Java语言中已经被赋予特定意义的单词,如int、if、boolean等。
(2)声明常量
常量通常也叫“final变量”,声明常量的语法如下:
final 数据类型 常量名称[=值];
如;final double PI=3.1415926;(只能进行一次赋值)
注:当定义的final变量属于“成员变量”时,必须在定义时设定初始值。
(3)声明变量
语法如下:数据类型 变量名;如:int age;
(4)变量的有效范围
1)成员变量:
在类体中定义的变量叫成员变量,在整个类中都有效。成员变量又可分为静态变量和实例变量。
静态变量:在成员变量的类型前面加上关键字static就是静态变量。如:static int y=90;
可以跨类使用,以“类名.静态变量”的方式在其他类中使用。
2)局部变量
在方法内部定义的变量以及方法的参数都叫局部变量,只在方法中有效。在方法中局部变量与成员变量同时出现时,成员变量被隐藏。
4.运算符
(1)赋值运算符(=):
二元运算符,若含有2个以上“=”,从最右边开始处理。
(2)算术运算符(+、-、*、/、%):二元运算符
(3)自增自减运算符(++、--):++a(--a)先运算后使用,a++(a--)先使用后运算。
单目运算符(用于数值型)
(4)比较运算符(>、<、==、>=、<=、!=):
运算结果为boolean型。二元运算符(用于数值型、字符型)
(5)逻辑运算符(&&、||、!):!为单目运算。
(6)位运算符
1)&(按位与):
运算法则:如果两个整型对应位都为1,结果才为1,否则为0。若两数精度不同,则结果精度与精度高的相同。
2)|(按位或):
运算法则:如果两个操作数对应位都为0,结果才为0,否则为1。若两数精度不同,则结果精度与精度高的相同。
3)~(按位取反):
运算法则:也叫按位非,将操作数二进制中的1改为0,0改为1.
4)^(按位异或):
运算法则:如果两个操作数同为0或者同为1时结果为0,否则为1。若两数精度不同,则结果精度与精度高的相同。
5)位移运算
对数据按二进制位进行移位操作,有3种:
<<:左移(y<<2=y*22)
>>:右移(y>>2=y/22)
>>>:无符号右移
(7)三元运算符
条件式?值1:值2
运算规则:若条件式的值为true,整个表达式取值1,若为false,整个表达式取值2.
5.代码注释
(1)//(单行注释)
(2)/*....*/(多行注释)
(3)/** */(文档注释)
6.数字处理类
(1)数学运算
Math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值及平均值方法。
使用如下形式调用:Math.数学方法
Math类中还有一些常用数学常量,如:PI、E。
使用如下形式调用:Math.PI
(2)随机数
Math类中存在random()方法,用于产生随机数,弄人生成0.0~1.0的double随机数,即:0<=Math.random<=1.0
(int)Math.random*n (返回大于等于0小于n的随机数)
(int)Math.random*n +m (返回大于等于m小于n+m的随机数)
二.流程控制
1.条件语句
(1)if语句
1)简单的if语句:if(布尔表达式){}
2)if...else语句:if(布尔表达式){}else{}
3)if...else if多支语句:if(布尔表达式){}else if(布尔表达式){}else if(布尔表达式){}...
(2)Switch语句
Switch(表达式){ //表达式值必须为整型、字符型、字符串型(新增)
Case 常量值:
语句模块
break;
...
default:
语句模块
break;
}
2.循环语句
(1)wile(条件表达式){执行语句} //先判断再运行
(2)do{}while(条件表达式); //先运行再判断,程序至少被执行1次,注意分号。
(3)for(表达式1;表达式2;表达式3){执行语句} //循环次数固定的
表达式1 | 表达式2 | 执行语句 | 表达式3 | 表达式2 | 执行语句 | ....... |
(4)break:只出现在switch及循环语句中,终止当前循环。
continue:强制一个循环提前返回。
return:结束当前方法的执行,返回调用该方法的语句处。
注:循环语句与循环语句以及条件语句可以根据需要嵌套使用。
3.程序调试
步骤:设置断点----单步运行----观察变量
F5:“单步跳入”。进入方法内部。
F6:“单步跳过”。仅执行本代码,执行完跳到下一行代码。
F7:回到断点。
F8:跳到下一个断点。
三.数组
1.定义数组:数据类型[]数组名=new数据类型[长度];
2.数组初始化:数据类型[]数组名={值1,值2.......};或
数据类型[] 数组名=new数据类型[]{值1,值2.......};
3.数组长度:数组名.length
4.数组的常用操作:添加、修改、删除
删除的语句:for(int i=index;i<s.length-1;i++){
s[i]=s[i+1];}
s[s.length-1;]=null;
5.Arrays类常用的方法:
Arrays.equals(s1,s2); //判断是否相等,不要加[]
Arrays.sort(s); //升序排列
Arrays.toString(s); //数组转为字符串
Arrays.fill(s,val); //数组所有元素赋值为val
Arrays.copyOf(s,n); //数组s复制成长度为n的新数组
Arrays.binarySearch(s,n); //查找数组s中n的下标
四.字符串
1.定义字符串:String s = "有志者事竟成";或String s = new String("有志者事竟成");
2.字符串的长度:name.length()
3.字符串的比较:Course1.equals(Course2)区分大小写
Course1.equalsIgnoreCase(Course2)不区分大小写
Course1.toUpperCase()全部转为大写
Course1.toLowerCase()全部转为小写
4.字符串的连接:(1)“+”。
(2)String s = new String("你好,");
String name = new String("张三!");
String sentence = s.concat(name);
5.注:字符串是引用数据类型但是具有不变性,此特点同基本数据类型。
6.常用提取方法:
(1)indexOf(int ch) /indexOf(String value):搜索第一个出现的字符ch(或字符串value)
返回出现第一个匹配的位置, 如果没有找到字符或字符串,则返回-1
(2)lastIndexOf(int ch) / lastIndexOf(String value):搜索最后一个出现的字符ch(或字符串value)
(3)substring(int index):提取从位置索引开始的字符串部分
(4)substring(int beginindex, int endindex):提取beginindex和endindex之间的字符串部分(不包括末尾)
beginindex: 字符串的位置从0开始算;endindex:字符串的位置从1开始算
(5)String trim() :返回一个前后不含任何空格的调用字符串的副本
(6)a.charAt(int index): 获取指定位置的字符
7.StringBuffer:String增强版
(1)StringBuffer声明
StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer("aaa");
(2)转化为String类型
sb.toString();
(3)追加字符串
sb.append("**");
五.类与对象
1.区别:
对象是用来描述客观事物的一个实体。
类是具有相同属性及方法的一组对象的集合。类定义了对象拥有的特征属性及行为方法。
2.类的定义步骤:定义类名、编写类的属性、编写类的方法
3.创建对象:AccpSchool center = new AccpSchool();
使用对象:给类的属性赋值:对象名.属性
调用类的方法:对象名.方法名()
4.数据类型总结
(1)基本数据类型:作为成员变量时默认初始值为0,赋值操作传递的是变量的值,改变一个变量的值不会影响另一个变量。
(2)引用数据类型:作为成员变量时默认初始值为null,赋值是把原对象的引用(内存地址)传递给另一个引用。
对于数组而言,当一个数组名直接给另一个数组名赋值时,相当于传递一个引用,此时两个引用指向同一个数组,也就是同一个内存空间。
(3)特殊类型:null表示没有,不能给属性赋值,也不能调用方法。
(4)在作为方法参数时的区别:
基本数据类型是值的复制,经过方法后原值不变。
引用数据类型是内存地址的传递,经过方法调用后原值改变。
5.类的方法:
(1)定义:public 返回值类型 方法名() {方法的主体}
(2)方法的命名:通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写。
(3)方法的返回值:如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型。
如果方法没有返回值,返回类型为void.
(4)方法的调用:对象名.方法名();
1、类Student的方法a()调用Student类的方法b(),直接调用 | public void a(){ b(); //调用b() } |
2、类Student的方法a()调用类Teacher的方法b(),先创建类对象,然后使用“.”调用 | public void a(){ Teacher t = new Teacher(); t.b(); //调用Teacher类的b() } |
6.包
(1)包的创建:(使用package声明包,以分号结尾)
分别创建包和类:创建项目→创建包→创建类
创建类的过程中创建类所在的包:
创建项目→创建类(在此过程中声明所属包,如无声明,则显示“缺省包”)
(2)导入包:import 包名.类名;(*: 指包中的所有类)
7.带参数的方法:
(1)语法:<访问修饰符>返回类型 <方法名>(<形式参数列表>){
//方法的主体}
调用带参数的方法:对象名.方法名(实参1,实参2,……,实参n)、
(2)特殊应用:
1)数组作为方法的返回值
2)数组作为方法的参数
3)对象作为方法的参数