Java 基础快捷键以及相关基础知识总结——3

标识符

Java 的标识符是由字母、数字、下划线_、以及美元符$组成,但是首字母不可以是数字。Java 标识符大小写敏感,长度无限制,不能是 Java 中的关键字。命名规则:要见名知意!

u  变量要首字母小写和驼峰原则;

u  常量的单词字母要全部大写,若有两个以上的单词组成,就用下划线"_"进行连接;

u  类名要首字母大写和驼峰原则;

u  方法名要首字母小写和驼峰原则,如showRun()

变量

通过变量来操纵存储空间的数据,变量就指代这个存储空间。空间的位置是确定的,但是里面存放的值不确定。

局部变量

存在于栈内存的方法中,生命周期伴随所属区域始终,使用前必须先声明和初始化

成员变量

(实例变量)

存在于堆内存的对象中,从属对象,生命周期伴随对象始终,自动初始化、有默认初始值

静态变量

(类变量)

存在于方法区,用static修饰,从属类,生命周期伴随类始终,自动初始化、有默认初始值

数据类型

1.分类

基本数据类型:逻辑型、文本型(char)、数值型

byte(1字节)、short(2)、int(4)、long(8)、float(4)、double(8)

引用数据类型:类、接口、数组   

大小统一是4字节,记录的是其引用对象的地址!

注意:

u  实际上还有一种基本数据类型:void,其对应的包装类是:java.lang.Void

u  Java 中迚行方法调用传递参数时,基本数据类型传递的是该数据值本身,引用数据类型传递的是对对象的引用——地址,而不是对象本身;Java 中只有值传递!

u  转义字符:\n换行      \r回车   \f换页   \’引号         \\反斜杠号

2.基本数据类型对象包装类

基本数据类型都有自己对应的包装类:byte Byte;short Short;int Integer;long Long;boolean Boolean;float Float;double Double;char     Character

基本数据类型存储在栈内存中,而它们对应包装类的实例对象存储在栈内存中。

基本数据类型对象包装类的最常见作用,就是基本数据类型和字符串类型之间做转换

(1)基本数据类型转成字符串:基本数据类型+""或基本数据类型.toString(基本数据类型值);

Integer.toString(34);//将34整数变成"34";

(2)字符串转成基本数据类型:xxx a = Xxx.parseXxx(String);

int a =Integer.parseInt("123");

double b = Double.parseDouble("12.23");

boolean b =Boolean.parseBoolean("true");

//或者可以写成

Integer i = newInteger("123");  int num =i.intValue();

还可以进行进制之间的互换:

(1)十进制转成其他进制:toBinaryString();二 toOctalString();八 toHexString();十六 

(2)其他进制转成十进制:arseInt(string,radix);//其中,radix=2,8,16

JDK1.5以后,简化了定义方式:Integer x = new Integer(4);可以直接写成

Integer x = 4;//自动装箱      x = x + 5;//自动拆箱,通过intValue方法。

注意:

u  使用时,如果写成Integerx = null;上面的代码就会出现NullPointerException;

u  定义对象时,当数值在byte范围内容,如果该数值已经存在,则不会在开辟新的空间;

u  对于数值型的取值范围,它们都以常量的形式义在对应的包装类中了。

System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);

System.out.println("包装类:java.lang.Byte");

System.out.println("最小值:Byte.MIN_VALUE="+ Byte.MIN_VALUE);

System.out.println("最大值:Byte.MAX_VALUE="+ Byte.MAX_VALUE);

// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台

System.out.println("最小值:Character.MIN_VALUE="+(int) Character.MIN_VALUE);

System.out.println("最大值:Character.MAX_VALUE="+(int) Character.MAX_VALUE);

数组

数组是相同类型数据的集合。它的长度固定,一旦创建完成后长度是不可改变的。Java允许创建任何类型的数组,而数组的大小是int型变量,其值是非负数。


1.数组的内存结构

2.赋值与复制

(1)赋值(必须是类型相同的):可以让多个数组变量指向同一个数组。

int[ ]arrs=arr;

(2)复制:通过clone()方法,其实新建了一个数组

int[ ] cloneArr=(int[ ])arr.clone( );

注意:当数组类型是类(非基本数据类型)时,调用clone( )方法,复制的是数组的内容即引用,并没有复制引用指向的对象。

3.几种常见操作

(1)排序

选择排序法:从头角标对应的元素开始,和每个元素进行一次比较。第一次内循环后,最值出现在头角标位置

for (int x=0;x<arr.length-1 ; x++){

       for(int y=x+1; y<arr.length; y++){

              if(arr[x]>arr[y]){

                     swap(arr,x,y);}}}

冒泡排序:相邻两个元素以此比较,符合条件就调换顺序。第一次内循环后,最值出现在未角标位置

for(int x=0;x<arr.length-1; x++){                                                         

       for(int y=0; y<arr.length-x-1; y++){//-x:让每一次比较的元素减少,-1:避免角标越界。

if(arr[y]<arr[y+1]){

              swap(arr,y,y+1);}}}

(2)折半查找

public static inthalfSearch (int[] arr,int key){

int min = 0,max =arr.length-1,mid;

while(min<=max){

       mid = (max+min)/2;

       if(key>arr[mid])

              min = mid + 1;

       else if(key<arr[mid])

              max = mid - 1;

              else

                     return mid;

       }

       return -1;}}// 如果要想实现在一个有序的数组里面加入一个元素,要求加入后数组里面的元素任然有有序的。此处应该改成return min

4.二维数组

格式1:int[][] arr = new int[3][2]

l  定义了名称为arr的二维数组

l  二维数组中有3个一维数组,每一个一维数组中有2个元素

l  一维数组的名称分别为arr[0],arr[1], arr[2]

l  给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

格式2:int[][] arr = new int[3][];

l  二维数组中有3个一维数组,每个一维数组都是默认初始化值null

l  可以对这个三个一维数组分别进行初始化:

arr[0] = new int[3];

arr[1] = new int[1];

arr[2] = new int[2];

格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

l  二维数组中的有三个一维数组,每一个一维数组中具体元素也都已初始化

第一个一维数组arr[0] = {3,8,2};

第二个一维数组arr[1] = {2,7};

第三个一维数组arr[2] = {9,0,1,6};

l  第三个一维数组的长度表示方式:arr[2].length;

多维数组:由一级级的一维数组组成,是数组的数组。除了最后一层数组由数组元素组成,其余的数组都是数组变量的数组。

键盘输入方法

1.接收一个字符:System.in.read();

char c=(char)System.in.read();

2.接收一个字符串:BufferedRead类和InputStreamReader类

BufferedReaderbr=new BufferedReader(new InputStreamReader(System.in));

Stringc=br.readLine();

3.接受任意数据:Scanner类

Scanner s=new Scanner(System.in);

System.out.println("请输入你的姓名:");

String name=s.nextLine();

System.out.println("请输入你的年龄:");

int age=s.nextInt();

System.out.println("请输入你的工资:");

float salary=s.nextFloat();

Scanner s=new Scanner(System.in);

System.out.println("请输入你的年龄:");

int age=s.nextInt();

System.out.println("请输入你的姓名:");

String name=s.next();

System.out.println("请输入你的工资:");

float salary=s.nextFloat();

next()和nextLine()的区别:

在java中,next()方法是不接收空格的,在接收到有效数据前,所有的空格或者tab键等输入被忽略,若有有效数据,则遇到这些键退出。nextLine()可以接收空格或者tab键,其输入应该以enter键结束。

访问控制符

使用访问权限符修饰方法/成员变量的可见性

访问控制符

本类

同一个包中的类

子类

不同包中的类

public

protected

默认

private

       并不是绝对的,如果同时满足两个条件,要以前面的为主要标准。例如,对于A类中用protected修饰的方法test,异包中的B类继承A类,此时可以看成B是A的子类。对于默认访问权限符修饰的类,如果子类和父类在同一个包中,那么它对子类仍然可见。

跳转语句

break

结束其所在的循环而不进入下一轮循环;如果有循环嵌套则不会终止外部循环

continue

结束当次循环,继续进行下一轮循环

return

返回数据,终止运行

猜你喜欢

转载自blog.csdn.net/zhuqiao4814/article/details/82852338
今日推荐