1)标识符的书写
包名:多单词组合在一起时,所有都小写,xxxyyyzzz
类名:多单词组合在一起时,每个单词首字母要大写,XxxZzzYyy
变量名和函数名:多单词组合在一起时,第一个单词小写,第二个单词起每个单词首字母大写,xxxZzzYyy
常量名:所有单词都大写,相邻两个单词用_分开,XXX_YYY_ZZZ
2)常量的分类
整数;
小数;
字符;
字符串;
boolean;
null;
3)整数的表现形式
二进制
八进制
十进制
十六进制(用0x开头表示,0-9,A-F,满16进1)
4)负数的二进制表现形式:正数的二进制取反加1.负数的二进制最高位是1.
5)java是强类型语言,对每一种数据都定义了明确的数据类型,在内存中分配了不同大小的空间。
数据类型分为基本数据类型和引用数据类型。基本数据类型有:(整数类型) byte short int long (浮点类型)float double (字符类型)char (布尔类型)boolean
引用数据类型有:(类)class (接口) interface ( 数组) [ ]
整数类型 默认是int 浮点类型默认是double
6)各个整数型数据容量
byte -128~127 short 负的三万多到正的三万多
类型提升:容量低的向容量高的转,byte+int=int (byte类型提升为int)
强制转换:byte+int=(byte)int (意思是将int强制转换成byte)
7)变量格式
数据类型 变量名 = 初始化值 int x = 2
特殊写法:
long l = 345333l (long类型附值后面需加一个字母l加以区别)
float f =23.3f (需要加一个字母f加以区别)
8)算术运算符 % ++ (前)int a =1 ,int b , b=++a, 结果是a=2,b=2. (++a表示a先自增后再附值给b) 2%8=2,规律:如果左边小于右边,取模为左边,左边等于右边,取模为0, -1%3=-1 1%-3=1,取模过程中如果有负数,取模的结果只看左边。
9)转义字符
\t 表示制表符。
10)逻辑运算符
& 只要有一个为false,就为false。
| 只要有一个为ture,就为ture。
^ 与 | 有一点不一样的地方,即ture^ture为false。
&& 与&的区别:&&如果第一个运算条件为false,后面不再做运算,&不管第一个条件是ture是false,都需要对条件进行运算完毕。
11)位运算符
<<左移 就是乘以2的移动位数幂
>>右移 就是除以2的移动位数幂
>>>与>>的区别:>>右移后最高位补什么由原始数值的最高位是什么就补什么,而>>>最高位补的都是0.
& | ^ ~(取反) ^异或同一个数两次,还是原来是那个数。4^8^8=4
12)三元运算符
(条件表达式)?表达式1:表达式2
int x=2,int y=3;
z=(x<y)?x:y
三元运算符一定会有结果。
13)
判断语句
if表达式
格式1
int x=4;
if(x<9)
{
System out println ();
}
if里面条件表达式如果只有一个,大括号可以不写。
格式2
int x=2;
if(x<7)
{
int s=x
}
else
{
int g=x
}
格式3
int x=1;
if (x=4)
{
int t=2;
}
else if(x=5)
{
System.out.println("haha")
}
else
{
}
选择语句
switch
switch(题目)
{
case 答案1:
执行语句;
break;
case 答案2:
执行语句;
break ;
……
default:
执行语句;
break;
}
if和switch有点像,需要注意的是,如果答案比较多,用switch效率会相对较低。
循环语句
while
格式1
while(条件表达式)
{
执行语句;
}
格式2
do
{
执行语句;
}
while
{
循环条件
}
while 和do while的区别,while是先判断循环条件再执行循环体(执行语句);do while 先执行一次循环体,再判断循环条件。
格式3
for(初始化表达式;循环体表达式;循环后的表达式)
{
执行语句;
}
while和for的区别:for语句执行完变量会在内存消失。while则不会消失。
小知识点:
无限循环的最简单表达形式:
for(;;){}
while(ture){}
14)累加思想
通过一个变量来记录一个循环后的结果(递增或者递减)。
比如:计算1~100的和
int y = 0;
for (x = 1;x<=100;x++)
{
y+=x;
}
System.out.println(y);
15)计数器思想 一个变量,一个
比如:找出1~100中7的倍数的数
int y = 0;
for (x = 1;x<=100;x++)
{
if (x % 7 == 0 )
y++;
}
System.out.println(y);
16)嵌套循环
for( ; ; )
{
for ( ; ; )
{
}
}
规律:初下中上。
17)
其他流程控制语句
break; 作用的语句有两个,一是循环语句for,一个是选择语句switch
continue; 只能作用于循环语句,中断本次循环,继续下次循环。
注意点:break和continue单独存在时,下面如果有语句都不会被执行到。
18)函数
函数格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,……)
{
执行语句;
return 返回值;
}
19)如何定义一个函数
一、函数是一个功能,那么就要明确函数的功能是什么,即结果是什么?(返回值)
二、是否需要未知参数参与运算。(参数列数)
20)函数的特性:重载
重载:在同一个类中,允许存在一个及以上同名的函数,只要他们的参数类型或者个数不一样即可。
也就是说重载不关返回值类型的事,只看参数列表。
21)数组
数组的特性:数组里面的元素都有编号。
格式1
元素类型 [ ] 数组名称 = new 元素类型 [元素个数或者叫数组长度 ] int [ ] x = new int [ 3 ] ; 举例中的 x 不是int类型 ,而是数组类型。数组类型是数据类型中的第二大派(基本数据类型、引用数据类型)引用数据类型中的的第三个(类、接口、数组类型) 之所以是属于引用数据类型是因为,x 是在栈内存中,而int [ ] 是在堆内存中,x引用了堆内存中的数组int [ ] 的地址。
格式2
元素类型 [ ] 数组名称 = new 元素类型 [ ] { 元素 }; int [ ] x = new int [ ] { 3,5,6,76,7};
格式3
int [ ] x = { 3,5,6,76,7};
22)内存结构
栈内存 用于存放局部变量,当数据使用完,所占空间会自动释放。
堆内存 存放 数组和对象,即通过new建立的实例都存放在堆内存中。都有地址、有初始化值,不被使用的实体会在不确定的时间内被垃圾回收器回收。
方法区
本地方法区
寄存器
23)数组的操作
一、获取数组中的元素
一般使用遍历(for循环)。
小知识点:获取一个数组的长度或者说数组中的个数。用 数组名.length
class ArrTest
{
public static void arr (int [ ] arr)
{
System.out.print("[");
for ( int x=0,x<arr.length,x++)
{
if ( x!=arr.length-1)
System.out.print ( arr.[x] + ", ");
else
System.out.println ( arr.[x] + " ] " )
}
}
public static void main ( String [] args )
{
int [ ] x = new int [ ] { 2,3,4,6,55,7,0 ];
arr (x);
}
}
二、获取数组中的最值
class GetMaxMinTest
{
public static int getMax ( int [ ] arr )
{
int max = 0;
for ( x = 1 , x<arr.length,x++ )
{
if ( arr.[ max ] < arr.[ x ] )
max = x;
return arr.[ max ];
}
}
}
三、对数组进行排序
选择排序
public static void selectSort ( int [ ] arr )
{
for ( x = 0 ,x<arr.length-1,x++ )
{
for ( y = x+1,y<arr.length,y++ )
{
if (arr[ x ] > arr[ y ])
{
arr [ x ] = arr [ x ] ^ arr [ y ];
arr [ y ] = arr [ x ] ^ arr [ y ];
arr [ x ] = arr [ x ] ^ arr [ y ];
}
}
}
}
冒泡排序
public static void bubbleSort ( int [ ] arr )
{
for (int x = 0,x<arr.length-1,x++ )
{
for ( int y = 0,y<arr.length-1-x,y++ )
{
if ( arr [ y ] > arr { y+1 ]
{
arr [ y ] = arr [ y ] ^ arr [ y+1 ];
arr [ y+1 ] = arr [ y ] ^ arr [ y+1 ];
arr [ y ] = arr [ y ] ^ arr [ y+1 ];
}
}
}
}
java中有排序的功能,直接在主函数引用即可 Arrays.sort( arr )
四、查找
一般查找:
public static int getIndex ( int [ ] arr,int key )
{
for ( x=0, x<arr.length,x++)
{
if (arr [ x ] = key )
return x;
}
return -1;
}
折半查找:必须是数组在有序的情况下才能使用。
方法一:
public static int halfSearch (int [ ] arr,int key )
{
int min = 0,max = arr.length-1 ,mid;
while ( arr [ mid ] != key )
{
mid = ( mid + max ) /2;
if ( key > arr.[ mid ] )
min = mid +1;
else
max = mid -1;
if ( min > max )
return -1;
}
return mid;
}
方法二:
public static int getIndex ( int [ ] arr,int key )
{
int min = 0,max =arr.length-1,mid ;
while ( min <=max )
{
mid = ( min +max )/2;
if ( arr[ mid < key )
min = mid +1;
else if ( arr [ mid ] > key )
max = mid -1;
else
return mid;
}
return -1;
}
24)二级数组
格式一
int [ ] [ ] x = new int [ 3] [4 ] ; 3代表这个数组有3个一维数组,而每一个一维数组有4个元素。即3代表的是二维数组的长度,4代表的是一维数组的长度。
格式二
int [ ] [ ] x = new int [3] [ ] ;代表有3个二维数组,但每一个一维数组指向为null。
格式三
int [ ] [ ] x = { {2,3,4} , { 3,45,2} , {35,64,6};代表二维数组的长度为3,一维数组都有元素。