Java学习(四)Java基础
一、熟悉2、8、10、16进制之间的转换
1、 4位2进制代表一位16进制,3位2进制代表一位8进制。
eg: (10)16=(00010000)2=(00010000)2
2、X进制(X为2、8、16)转10进制,用乘法。第n位X进制,相当于乘以X进制的n-1次。
eg: (1111)16=(1*16^3+1*16^2+1*16^1+1*16^0)10
3、10进制转X进制(X为2、8、16),分整数部分和小数部分。
(1)整数部分用除法。用要转换的整数除以X进制,记录余数,直到商为0 ,将得到的余数倒写。
eg: (16)10=(10000)2
(2)小数部分用乘法。用要转换的小数乘以X进制,记录小数点前的部分,直到小数点后半部分为零。
eg:(0.125)10=(0.001)2
二、Java基本的数据类型和存储方式
1、
2、Java中存储数据用寄存器、栈、堆。
寄存器不能直接控制处理。
对于栈空间来说,先进后出是它的特点,且存取数据的效率高、JVM的基本类型数据存放在栈空间,但是栈空间的存储空间较小,不能存放大量的数据。
对于堆空间来说,数据存放的位置是随机分配的,而且堆空间存储数据的空间大,可以存放大量数据,但是堆空间存取数据的效率最低。
3、Java底层是用一个16位整数去处理char类型,该数值是一个字符的unicode的编码值。数字0对应48,大写A对应65,小写a对应97。
4、String(字符串)
(1)声明:String 字符串名称="XXX";//栈内存
(2)声明并初始化:String 字符串名称=new String("XXX") //堆内存
(3)==比较的是地址,equals比较的是内容。//变量1.equals(变量名2)
(4)str=str+"";//只是改变指向,实际内容并未修改。字符串内容不能被修改。
(5)求字符串长度用“字符串名.length();”可以得到。
(6)字符串转数组用“字符串名.toCharArray() ;”可以得到。
(7)从字符串提取出指定位置字符用“字符串名.charAt();”可以得到。
(8)过滤字符串中存在的字符:“字符串名.indexOf();”可以得到。
(9)去掉字符串的前后空格:“字符串名.trim();”可以得到。
(10)从字符串中取出子字符串 “字符串名.subString();”可以得到。
(11)大小写转换: “字符串名.toLowerCase();”或者 “字符串名.toUpperCase();”可以得到。
(12)判断字符串的开头结尾字符:endsWith() startWith()
(13)替换String字符串中的一个字符:replace()
(14)StringBuffer是可以更改的,区别于String。StringBuffer是一个操作类,必须通过实例化进行操作。
可以用insert(插入的位置,插入的内容)进行插入;
可以用replace(开始插入的位置,截止位置,替换内容)进行替换;
indexOf使用参照String
5、StringBuilder
(1)在 字符串缓冲区被单个线程使用的时候,建议优先考虑,速度快于StringBuffer。
(2)如果涉及到线程安全方面,建议使用StringBuffer。
(3)常用方法:append()和insert()
三、几个量
1、常量:不变的量。
2、变量:可变的量。方便记忆、可简化计算。
(1)命名一般要求:首字母为$/_/英文字母,之后可以包括数字。一般首字母不为大写,大写的一般用于定义类和接口。或用驼峰命名法,即第二个单词首字母大写。
(2)定义要求:标明类型。
(3)使用原则:初始化,用“=”初始化。
(4)自增自减:i++;先运算后自加1;++i;先自加1后运算。
(5)借助第三个变量进行数据交换。
3、字面量:Java变量和常量存储的具体的数据。
4、运算类型不同时,出现小类型、大类型之间的转换。大类型由高到低依次为byte、short、int、long、float、double。大类型转为小类型时,最高位由数据变为符号位。
四、转移字符、获取数据、Java错误类型、调试、逻辑运算
1、转义字符“\”:‘\n’表示回车;'\t'表示制表位字符,可向右跳至少8个字符;'\\'表示\;‘‘\'’表示单引号;‘\“’表示双引号;‘\uXXXX’表示unicode编码对应的字符。
2、 获取数据的方式:
通过args数组获取数据:在Run-Run Configurations中添加新的java application,并在Arguments添加新的参数。
通过scanner类用于扫描控制台输入的数据:eg:String、int、double都可以通过直接的语句进行获取,
比如double nextDouble(),Char通过CharAt()方法从next()或者nextLine()获取输入的字符。
eg:char String.charAt(int index); next()charAt(int index);
step:创建Scanner类的一个对象(Scanner scanner=new Scanner(System.in);)再通过scanner调用next等方法。
import java.util.Scanner(注意可以导入包)
3、Java错误类型:编译期语法错误(定义int但是后面赋值double)、运行期异常错误(运行时发现之前写的代码错误,通常会提示错误的类型和出错的位置)、运行期逻辑错误(程序执行的结果和预期不同)。
4、调试(debug)是查找、解决软件中逻辑错误代码。debug调试。
5、断点(break point)是在源代码的可执行部分的指定行设置一个标志,在调试运行方式下,程序运行到该断点标志处会自动暂停,等待下一步操作。双击行号左边出现断点,再次双击去掉。
6、关系运算种类如图所示,关系运算结果是true或者false。作用是判断语句和流程控制作用。
7、逻辑运算如图所示。
以与运算为例,两边都是数时进行按位于运算,两边都是关系时是逻辑运算。
长路运算和短路运算的区别是,长路运算会将两边都计算出来。
三种逻辑运算优先级:非运算最高,其次是与运算,优先级最低的是或运算。
8、异常
(1)定义:是导致程序中断运行的一种指令流,如果不对异常进行正确处理,可能导致程序的中断执行,造成不必要的损失。
(2)异常实例:对象只声明并为实例化、 被除数为0。。
(3)处理异常:
格式为:
try{异常语句}
//可以写多个catch
catch{Exception e}//Exception是父类,捕捉所有异常,出现其他异常也会被Exception捕捉。
finally{一定会执行的代码}
(4)常见异常
五、循环语句
1、if语句
(1)用于判断不用的条件,执行相应的代码。
(2)格式(else部分可省略):
if (条件表达式) {条件表达式为true时,执行本代码}
else{条件表达式为false时,执行本代码}
或者是 嵌套类:
if (条件表达式1) {条件表达式1为true时,执行本代码}
else if(条件表达式2){条件表达式2为true时,执行本代码}
else if(条件表达式n){条件表达式n为true时,执行本代码}
2、switch语句
(1) 用于选择,属于分支的一种。在JDK1.7之前switch语句限定对整形数据进行判断。
(2)格式为:
switch(表达式){
case 常量1:代码1;break;
case 常量n:代码n;break
default:
以上常量均不是,执行本代码。
}
注意:没有break就会一直执行之后的代码。
char grade=input.next().charAt(0);//索引第一个字符。
3、while
(1)格式1:
while(条件表达式){表达式为真就执行代码}
(2)格式2:(需无条件执行一次)
do{循环内容} while(条件表达式);
4、for
(1)格式:
for(循环变量初始化;循环继续的条件表达式;循环变量值变更){循环体内容}
六、Java数组
1、定义:
有序数据的集合,每个元素均有相同的数组名和不同的下标做唯一标识。
2、 分类:按维数:一维、 二维、三维
3、数组声明:
(1)一维:type arrayName[];//type[] arrayName;
(2)二维:typearrayName[] [] ;//arrayName[][]=new type[行][列];
(3)内存分配:分配内存才能访问他的元素。使用new为数组分配内存空间
eg:int score[]=nulll;//null表示引用数据类型的默认值
score=new int[10];// 为数组开辟空间