零基础JAVA学习---------帮助别人就等于帮助自己,谢谢。
java数据类型
==========================
1基本类型
===================================
byte 1个字节(8位) {-128~127}(-2~7到2~7-1)
short 2个字节(16位) -2~15到2~15-1
int 4个字节(32位) -2~31到2~31-1
long 8个字节(64位) -2~63到2~63-1
float 4个字节 单精度
double 8个字节 双精度(美国工业电气协会浮点数表示规范)
char 2字节 (从0到2~16次方-1) 赋值都是字符或字符串
boolean 1个字节 true false
基本类型字面值
===========================
*整数字面值是int 类型
*byte short char 比int范围小的整数,允许用范围内的值直接赋值
*浮点数字面值是 double 类型
*字面值后缀
L long
long a = 999999999L;
F float
float a =3.14f;
D double
double a =3.0d;
*进制前缀
0x 16进制 一个16进制的数就是二进制的4位
0xff 表示 255
0 8进制 一个8进制的数就是二进制的3位
0377 转十进制 是255 (过程:3*8~2+7*8~1+7*8~0)
\u char类型 16进制
★基本类型运算规则★
=======================================
* 运算结果的数据类型,与运算项中范围最大的类型一致
* byte short char,比int范围小的整数运算时,会自动转成int类型
* 整数运算溢出
int a = Integer.MAX_VALUE;(int a 最大值表达式)
int a = Integer.MIN_VALUE;(int a 最小值表达式)
*浮点数运算的不精确
*浮点数的特殊值
Infinity 无穷大
Double.MAX_VALUE*2
NaN (Not a Number)
Math.sqrt(-2) 开平方 不是数
=========================
*范围小的>范围大的
byte a = 127;
int b = a;
*范围大的>范围小的
需要强制转型
byte a = 255;
byte b = (byte)a; 回损失数据值
* import 导包
指明路径,后面代码中可以简写类名,而不必写全路径。
*String 用在字符串
String a = "你好";
String a = "A";
*调整代码缩进标准:快捷键 Ctrl+A 全选后 Ctrl+i
符号
&& 表示: 与
两侧都为真 结果为真;
有一侧为假 就过都为假;
||表示 :或
两侧同时为假 结果为假;
若随意一侧为假 结果都为真;
>> 带符号 右移位
符号位为0, 左侧就补0
符号位为1, 左侧就补1
>>> 不带符号右移位
不管符号位是0还是1,左侧都补0
<< 左移位,右侧补0
* 移位运算 不修改原值,新分配内存控件保存移动结果
*向右移动1位相当于/2
向左移动1位相当于*2
自增自减
++
--
int a =10;
System.out.println(a++); // a变成11,使用它的原值10
System.out.println(++a); // a变成11,使用它的新值11
三项运算
=========================
1?2:3
1是真,执行2
1是假,执行3
= 赋值运算
==============================
+=
-=
/=
>>=
^=
......
int a = 10;
a=a+3;
a+=3;
★在【0,1000)范围内产生随机整数
int a = new Random().nextInt(1000);//随机生成一个数字
流程控制
=============================
if_else else_if
switch_case_default
只能判断 byte,short,char,int,enum类型
当一个case成立,从这个case开始,无条件向后面执行每个case,直到结束。
switch(变量或表达式){
case 1 ://case后面只能写常量 或者是 数字 ,不能是表达式
case 2 :
case 3 :
case n :
default;//此处default 表示否则
}
for
for(定义变量;执行条件;修改变量){
}
for(int i =1;i<=10;i++){
System.out.println(i);
}
while
do_while
循环嵌套
==========================================
for(){
for(){
中断
==========================
break
中断跳出循环
continue
继续执行循环,跳过当前位置的程序
//获得输入的目标值
*int t = Integer.parseInt(et.getText().toString());
随机数产生(1——1000)
Math.random()...生成0.0到0.99999。。。。。(小于1)
Math.random()*1000.....0.0__999.9999
Math.random()*1000+1....1.0___1000.9999...
(int)(Math.random()*1000+1) 1——————1000
Math.sqrt(a) 表示a的开方值
循环命名
==============================
*嵌套的内层循环中,控制外层循环,需要给外出循环命名
outer:
for(;;){
for(;;){
语句;
if()break outer;
语句;
if() continue outer;
}
}
while
==========================
先判断 后执行
while(条件){
}
先执行一次 后判断
do-while
do{
}while(条件)
数组
=========================
*用来存放一组数据的数据结构
数组创建
----------------------------
1. int[] a = new int[5];
*5个位置都是默认值0
*new为数组新分配内存控件
*变量a保存的是数组的内存地址值
2.int []a={3,6,65,2,4,765,345,6};
3.为数组变量重新赋值
a = new int {5,3,45,2};
数组访问
--------------------------
a[0] = 743
int k = a[2];
print(a[3]*2)
数组长度属性
-----------------------
a.length
数组一旦创建,数组长度不可变
数组长度允许是0
int [] a = new int[0];
数组遍历
----------------------
遍历:从头到尾依次访问每一个位置
for(int i=0;i a[i] } 数组工具类 java.util.Arrays ----------------------------- Arryays.copyOf(数组,长度) 将数组赋值成制定长度的新数组 Arrays.sort(数组) 优化的快速排序 算法 Arrays.toString(数组) 将数组中的值,连接成字符串 Arrays.bianrysearch(数组,目标值·) 二分法查找 在数组中寻找目标值的位置 如果找不到,返回负数 Arrays.fill(数组,值) 所有位置填充指定的值 数组复制 --------------------------- Arrays.copyOf(数组,长度) System.arraycopy(原数组,原数组起始位置,目标数组,目标数组起始位置,长度) 二维数组 ------------------------------------------- *存放数组的数组 创建二维数组 --------------------- 1 int[] [] a =new int[3][2]; *一共创建了4个数组: 一个外围数组,三个内部数组 *外围数组长度3,内部数组长度2 *在外围数组中,存放的内存地址 2 int [][] a = new int[3][]; 只创建了一个外围数组,之后可以在创建一维数组放入 a[0] = new int[4]; a[1] = new int[2]; a[3] = new int[3]; 3 int[][] a ={{6,3,5,7}{9,4}{1,5,3}}; 二维数组访问 --------------------------------------------- a[][] 二维数组的遍历 -----------------------------------