基础篇
- java是一种强类型语言,所有的变量在使用之前都需要定义或声明,所有的变量必须有明确的数据类型,数据类型表示在变量中可以存放的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不会改变数据类型。
- 数组:
是一种容器,特点是:
· 其中所有的元素具有相同的数据类型
· 一旦创建,不能改变大小
数组名.length -->数组长度 可以使程序具有可扩展性
· 创建数组:
int []a=new int[10]//创建一个长度为10的数组
int[] b={1,2,3,4,5,6}//直接初始化数组
new创建的数组会得到默认的0值。
普通变量是数据的拥有者
数组变量是数据的管理者
管理者的相互赋值(数组间的相互赋值)是管理权限的赋值
数组变量是数组的管理者而非数组本身
数组必须创建出来然后交给数组变量来管理
数组变量之间的赋值是管理权限的赋予
数组变量之间的比较是判断是否管理同一个数组
若想要将一个数组的内容复制给另外一个新的数组,必须遍历数组依次赋值。
二维数组
int[][]a=new int[3][5];
相当于 创建了一个三行五列的数组
若要遍历一个二维数组,则需要两层循环
for(int i=0;i<3;i++)
{
for(int j=0;j<5;j++)
{
System.out.println(a[i][j]);
}
}
二维数组的初始化:
int [][]a=
{
{1,2,3,4}//第一行
{2,3,4}//第二行 四列,空出的默认为0
}
字符类型
单个字符是一种特殊的类型:char
char c='a';
c++;
System.out.println(c);
或者:
char c='a';
char v='A';
int i=c-v;
System.out.println(i);
逃逸字符
:用来表达无法打印出来的控制字符或者特殊字符,由一个反斜杠\开头,后面跟上另一个字符,组合后成为逃逸字符
字符 | 意义 |
---|---|
\b | 退回一格 |
\t | 到下一个表位 |
\n | 换行 |
\r | 回车 |
\ \ | 反斜杠本身 |
包裹类型
- 每种基础类型都有对应的包裹类型
基础类型 | 包裹类型 |
---|---|
boolean | Boolean |
char | Chrarcter |
int | Integer |
double | Double |
- 可以用包裹类型来定义类型;
int i=10;
Integer k=10;
k=i;//可以相互赋值
//包裹类型可以比基础类型多一些操作
System.out.println(Integer.MAX_VALUE);//输出的是整型变量可表达的最大值
Math类提供的方法
- abs绝对值
- pow幂次
- random随机数
- round四舍五入
字符串变量
- String s;
- String 是一个类,String的变量是对象的管理者而非所有者
- 就像数组变量是数组的管理者而非所有者一样
- 所以需要用new 创建一个字符串
String s=new String("a string");
输入字符串
- in.next();读入一个单词,单词的标志是空格,tab,换行
- in.nextLine();读入一整行
- 不同于基础变量,字符串变量的相互赋值是管理权限的赋予
String a="aaa";
String b;
b= a;//字符串b和a共同管理字符串a所管理的字符串
- 比较两个字符串:
- ==比较比较两个字符串是否管理者相同
String s;
s=in.next();
System.out.println(s);
System.out.println(s=="bye");
- s.equals();比较s和括号内的字符串内容是否相同
String s;
String b="look";
s=in.next();
System.out.println(s);
System.out.println(s.equals(b));
- "==“判断的是是否为相同管理者,”.equals"比较两者的内容是否相同
字符串操作
- 字符串是对象,对它的所有操作都是通过”.‘运算符调用的
- 字符串.操作,表示对.左边的字符串进行.右边的操作,这里的字符串可以是常量也可以是变量
- 如下:
- 获得String 长度:name.length();
String name ="hello";
String str1 ="one";
String str2 ="";
String str3;
name.length();-->5
str1.length();-->3
str2.length();-->0
str3.length();-->error-->str3没有管理任何对象
- 访问String里固定位置的字符:s.charAt(index);
- 返回在index上的单字符
- index的范围是0到 .length()-1
- 第一个字符的index是0,和数组一样
- 得到子串:s,substring();得到从n号位置开始到末尾的全部内容
- s.substring(b,e);得到从b号位置到e号位置之间的内容
- 寻找字符s.indexOf©; 得到字符c的所在位置 -1表示不存在
- s,indexOf(t);找到字符串t的所在位置
函数(方法)的定义:
- 函数是一块代码,接受零个或多个参数,做一件事情,并返回零个或多个值。
- 函数的结构
- 函数头,在圆括号前的是函数名,函数名之前的为返回类型,圆括号内的–>参数表
- 大括号里面的内容是 函数体
函数调用
- 函数名(参数值);
- ()起到了表示函数调用的重要作用,即使没有参数也需要()。
- 如果有参数,则需要给出正确的数量和顺序
- 这些值会被按照顺序依次用来初始化函数中的参数
- Java在调用函数时,只能将函数外的变量值传递给函数需要的参数:
每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系。
过去,对于函数参数表中的参数,叫做形式参数,调用函数时给的值叫做实际参数,两个参数相互赋值,现在认为,是参数和值的关系。
本地变量
- 函数的每次运行,就产生了一个独立的空间,在这个空间中的变量,是函数这次运行所独有的,称作本地变量。
- 定义在函数内部的变量就是本地变量,参数也是本地变量
变量的生存期和作用域
- 生存期:什么时候这个变量开始出现了,到什么时候它消亡了
- 作用域:在代码的什么范围内可以访问这个变量,或者说:这个变量可以起作用
- 对于本地变量,两个问题的答案都是:在大括号内-----块
本地变量的规则
- 本地变量是定义在块内的,块 就是一对大括号内
- 它可以是定义在函数的块内
- 也可以是定义在语句的块内
- 甚至可以随便拉一对大括号来定义变量
- 程序进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
- 块外定义的变量在里面仍然有效
- 本地变量不会被默认初始化
- 参数在进入函数的时候被初始化
- 不能在一个块内定义同名变量,也不能定义块外定义过的变量