笔记整理-Java基础01(基础知识+常量变量数据类型+运算符+流程控制语句+方法+数组)

前言:

感觉看自己过去的笔记,一不方便二感觉不完善,所以把自己以前的笔记整理在CSDN上,不足之处还请指正。


二进制与十进制转换

2–>10

例:10110(2)–>22(10)
转换法则:8421法则
笔记整理-Java基础01(基础知识+常量变量数据类型+运算符+流程控制语句+方法+数组)_第1张图片

10–>2

例:22(10)–>10110(2)
转换法则:除2取余,倒叙排列

字节

bit(比特位):代表一个0或者1
byte(字节):代表8个0或者1,1byte=8bit
kb(字节):1kb=1024byte

dos常用命令

dir: 列出当前文件夹下的所有文件和文件夹
cd 文件夹名: 进入该文件夹
cd\ :退到根目录
盘符: 切换盘符
cls: 清屏
网上搜索

java

jre:java运行时环境,包括 jvm+java的核心类库
jdk:java开发工具包,包括 jre+开发工具

关键字和标识符

关键字:

java已经定义好的,具有特殊含义的单词

标识符:

程序员定义的单词

  • 必须有数字、字母、_、$组成
  • 数字不能开头
  • 不能和关键字重名
  • 见名知意
  • 类名:所有单词首字母大写(大驼峰命名)
  • 变量名/方法名:第二个单词开始首字母大写(小驼峰命名)
  • 包名:全部小写

常量

常量分类:

  • 整数常量
  • 浮点数常量
  • 字符常量:有且仅有一个字符
  • 字符串常量:可以一个字符多个字符或者没有字符
  • 布尔常量
  • 空常量:null

变量和数据类型

数据类型:4类8种

  • 整数:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
  • 浮点数:float(4字节)、double(8字节)
  • 字符:char(2字节)
  • 布尔:boolean(1字节)

一个整数没有特殊说明,默认就是int,如果要定义成long类型就必须加上L
一个小数没有特殊说明,默认就是double,如果要定义float类型就必须加上F

变量的定义

数据类型 变量名 = 值;
变量的使用:直接使用变量名就是使用变量中的值
变量可以多次赋值,变量中的值以最后一次赋值为准
变量可以定义的同时赋值,也可以先定义后赋值


数据类型转换

为什么要数据转换,Java是一种强类型语言,如果两个数据的类型不一致,那么是不能参与运算的,需要转换为同一种类型才能运算。

自动转换

数据范围小的转换成数据范围大的类型
(byte、short、char)—>int—>long—>float—>double
注意:byte、short、char这三种数据类型参与运算时,会无条件先住转成int再参与运算
示例代码

short s = 10;
double d = 3.14;
//short + double = int + double == double + double
double d1 = s + d;

强制类型转换

数据范围大的转换为数据范围小的类型
格式:
数据范围小的类型 变量名 = (数据范围小的类型)数据范围大的值

常用ASCII值

‘A’---- 65、‘a’---- 97、‘0’---- 48

运算符

+作用

求和、连接字符串

++/–

++1/–1:表示先加/减1再使用
1++/1–:表示先试用再加/减1

&&和||

&&:全真为真
||:全假为假

三元运算符

boolean值?值1:值2
如果boolean值为true,那么是值1
如果boolean值为false,那么是值2

方法入门

格式

权限修饰符 返回值类型 方法名(参数列表){
//方法体:完成某个功能的代码块
//返回值
}


流程控制语句

选择结构:if

if(判断条件){
	//代码块;
}else{
}
//.....其他代码

选择结构:switch

switch(表达式){
	case1:
		代码块1;
		break;
	case2:
		代码块2;
		break;
	case3:
		代码块3;
		break;
		...
	default:
		代码块n;
		break;
}

case的穿透:
在case后面的break;的作用:结束整个switch
从语法上来讲,break是可以省略的
但是如果没有break,会出现穿透现象
所谓的穿透是指,直接执行下一个case中的代码,而不进行匹配

for循环

for(a.计数器;b.循环条件;d.步进语句){
		c.循环体
}

while循环

a.计数器;
while(b.循环条件){
		c.循环体;
		d.步进语句;
}

dowhile循环

a.计数器
do{
	c.循环体
	d.步进语句
}while(b.循环条件);

for和while的区别:
a.如果已知循环次数,建议用for 如果未知循环次数建议用while
b.for循环计数器,在for循环结束之后不能使用
while循环的计数器,在while循环结束之后还可以使用

跳转控制语句

breake:
a.用于switch,结束整个switch
b.用于循环,立刻结束整个循环
continue:
a.用于循环,立刻结束本次循环.继续下一次循环
break对if是不起作用的,编译是会报错的

死循环

Java中最最最简单的死循环:
while(true);
for( ; ; ) ;


方法

定义方法的完整格式:
权限修饰符 返回值类型 方法名(参数列表){
方法体
return 返回值
}
权限修饰符:public static(此时先这样记)
返回值类型:方法计算后结果的数据类型,如果没有就写void
方法名:见名知意+小驼峰
参数列表:该方法需要的未知量
方法体:完成方法的代码
return 返回值:表示返回方法 计算后的结果,返回到方法的调用处。还有表示方法的结束,这就意味着在这个语句后面的代码不起任何作用。
两个明确:明确返回值类型、参数列表
定义位置:类中其他方法外

方法的调用

赋值调用、输出调用。这两种调用又返回值时才有意义,没有返回值时这两种调用是报错的
单独调用:直接调用,实用于没有返回值时

方法的重载

重载概念:java允许在同一个类中,定义相同名字的方法,但是这些相同名字的方法必须有不同的参数列表
参数列表不同:参数个数、参数类型、参数顺序
JVM如何判断是调用哪个方法:通过调用时传递实际参数的类型
注:方法是不是重载看方法名、看参数列表


数组

概念:好比一个容器,可以保存多个变量/数据
特点:数组容器中所有数据的数据类型都时一致的、数组在程序运行时长度时固定的
元素:数组中的数据叫做元素

数组定义格式

1.数据类型[ ] 数组名 = new 数据类型[长度]
指定数组的长度,每一个元素的值由系统赋默认值
长度表示该数组中元素的个数
例:定义一个数组,保存我们班所有人的年龄
int[ ] ages = new int[58];
注:
整数类型: 默认值就是0
浮点数类型: 默认值就是0.0
字符类型: 默认值是空格
布尔类型: 默认值是false
String类型: 默认值 null

2.数据类型[ ] 数组名 = new 数据类型[ ]{值1,值2…}
指定数组的每个值,系统自动计算到底有多少个元素
例:定义数组,保存1-10这些数字
int[] nums = new int[]{1,2,3,4,5,6,7,8,9,10};

3.数据类型[ ] 数组名 = {值1,值2…}
语法糖格式
例:定义数组,保存1-10这些数字
int[] nums = {1,2,3,4,5,6,7,8,9,10};

通过索引访问数组元素

索引:数组中元素的编号,但是从0开始的,也叫做下标
访问元素:数组名[索引]
数组的长度属性:数组名.length

数组原理内存图

了解Java虚拟机内存划分
栈区(stack):运行方法、保存变量
堆区(heap):保存对象(保存new出来的东西)
方法区(method area):保存.class文件

一个数组内存图笔记整理-Java基础01(基础知识+常量变量数据类型+运算符+流程控制语句+方法+数组)_第2张图片
两个数组内存图
笔记整理-Java基础01(基础知识+常量变量数据类型+运算符+流程控制语句+方法+数组)_第3张图片
两个数组变量名指向同一个数组
笔记整理-Java基础01(基础知识+常量变量数据类型+运算符+流程控制语句+方法+数组)_第4张图片

数组常见异常

ArrayIndexOutOfBoundsException:数组越界
产生原因:程序员访问了不存在的索引
解决:修改索引,不要超过 数组.length-1
NullPointerException:空指针异常
产生原因:清空数组名的地址,再访问数组的元素
解决:不清空或者清空了不访问

数组常见操作

1.遍历

	//数组遍历输出
	public static void test1() {
        int[] nums = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }
	}

2.获取最大值或者最小值

	//获取数组的最大值或者最小值
    public static void test2(){
        int[] sz = {0,15,10000,4000,3456,1234,19899};
        int max = sz[0];
        for(int i = 1;i<sz.length;i++){
            if(sz[i]>max){
                max = sz[i];
            }
        }
        System.out.println("max:"+max);
    }

3.数组反转

	//数组反转
    public static void test3(){
        int[] sz = {0,15,10000,4000,3456,1234,19899};
        for(int min = 0,max = sz.length-1;min<max;min++,max--){
            int temp = sz[min];
            sz[min] = sz[max];
            sz[max] = temp;
        }
        for (int i = 0; i < sz.length; i++) {
            System.out.println(sz[i]);
        }
    }

数组作为方法的参数和返回值

1.数组作为方法的参数

	psvm{
		int[] nums = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
        test4(nums);
   	}
	//数组作为参数
    public static void test4(int[] nums){
        for(int i = 0;i<nums.length;i++){
            System.out.println(nums[i]);
        }
    }

2.数组作为返回值

	psvm{
		int[] num = getHccj(5, 6);
        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);
        }
	}
	//数组作为返回值
    public static int[] getHccj(int num1, int num2) {
        int he = num1 + num2;
        int cha = num1 - num2;
        int cheng = num1 * num2;
        int ji = num1 / num2;
        int nums[] = {he, cheng, cha, ji};
        return nums;
    }

方法的参数类型区别

参数是基本类型:
当方法的参数是基本类型时,形参的改变不会影响到实参
参数是引用类型:
当方法的参数是引用类型时,形参的改变会影响到实参

你可能感兴趣的:(javase)