java初学笔记01-数据类型,流程控制

一.从数据类型开始

8种基本数据类型:

  • 整数型:byte short int long
  • 浮点型:float double
  • 布尔型:boolean
  • 字符型:char

数据类型表示范围:

  1. 1.自动类型转换:

运算过程中,自动转换为容量最大的数据类型进行计算
跟字符串相加’+'时,都会转换为字符串,进行字符串拼接计算

  1. 2.强制类型转换:

可将容量大的类型转换为小的。注意!可能导致精度损失和溢出

注: 需要记忆的内容:
char字符转换为int值(ASCII编码):‘a’=97,‘A’=,

计算顺序:先计算,后赋值

二.运算符

1.算数运算符号

  • ‘+’:也是数据串连接符号
  • ‘-’
  • ‘*’
  • ‘/’: 计算结果为int类型时,舍弃小数部分
  • ‘%’: 取模。对负数取模时,-号忽略不计(5%-2=1)。但是被取模数
    的负号不能忽略(-5%2=-1)。
  • ‘++’:自增。++放前面,先运算后赋值;++放后面,先赋值后运算
  • ‘–’: 自减。–放前面,先运算后赋值;–放后面,先赋值后运算

2.赋值运算符

  • ‘=’
  • 扩展赋值运算符:
  • ‘+=’
  • ‘-=’
  • ‘*=’
  • ‘/=’
    注:扩展运算符计算时,会把运算结果强制准换为赋值变量的类型(先运算后转换再赋值)

3.比较运算符

比较运算符的运算结果为布尔值

  • ‘==’
  • ‘!=’
  • ‘>’
  • ‘<’
  • ‘>=’
  • ‘<=’

4.逻辑运算符

逻辑运算符运算的项为布尔值

  • ‘&’ 逻辑与
  • ‘|’ 逻辑或
  • ‘!’ 逻辑非
  • ‘^’ 逻辑异或:a异b=true,a同b=false。
  • ‘&&’ 短路与:单条件满足,另一侧条件不判断/执行
  • ‘||’ 短路或

5.位运算符(二进制运算)

二进制表示时各位数(1/0)之间的运算

  • ‘<<’ 左移:如m<<n,m的二进制数字左移n位,被移除的高位丢弃,右侧空缺位补“0”。
    m < < n = m ∗ 2 n m<<n=m*2^n m<<n=m2n
  • ‘>>’ 右移,同理,左侧最高位为“0”补“0”,为“1”补“1”。
    m > > n = m / 2 n m>>n=m/2^n m>>n=m/2n
  • ‘>>>’ 无符号右移:正数无符号右移运算结果同右移。
    正数右移左边补0,负数右移左边补1;无符号右移左边均补0
  • ‘&’ 与运算:a&b,二进制各位&运算,同为1结果为1。
  • ‘|’ 或运算
  • ‘^’ 异或运算
  • ‘~’ 反码
正数二进制
反码
补码+1
负数二进制
负数二进制
减-1
反码
正数二进制

6.三元运算符(三目运算符)

格式:(条件表达式)?表达式1:表达式2;
true 则执行表达式1
false 则执行表达式2

三元运算符的嵌套:
(a>b?a:b)>c?(a>b?a:b):c
(a>b?(a>c?a:c):(b>c?b:c))

7.运算符的优先级

序号运算符综合性
1“()” “[]” “.”从左到右
2“–” “++” “~” “-(负)” “+(正)” “!”从左到右
3“*” “/” “%”从左到右
4“+(加)” “-(减)”从左到右
5“<<” “>>” “>>>”从左到右
6“<” “<=” “>” “>=” “instenceof”从左到右
7“==” “!=”从左到右
8“&(按位与)”从左到右
9“^”从左到右
10"(或)"
11“&&”从左到右
12"
13“?:(三元运算符)”从左到右
14“=” “+=” “-=” “*=” “/=” “%=” “&=” “(或等)” “^=” “~=” “<<=” “>>=” “>>>=”从右到左

用括号()来确保运算的优先级

三.程序流程控制

1.顺序结构

自上而下,括号内外

2.分支结构

分支结构可嵌套使用

1.if-else

if(表达式){
//表达式的返回值需为布尔值
	语句;
	语句;
	...;
}else if(表达式){
	...;
}else if(表达式){
	...;
}else{
	...;
}

2.switch

switch (表达式){
	case 常量1:
		语句;
		语句;
		...;
		break;
	case 常量2:
		...;
		break;
	case 常量3:
		...;
		break;
	default:
		...;
		break;
}

switch()中表达式的返回值可以为byte,short,char,int,String,枚举
case后面为常量,不能为变量,而且各不相同
注意break不要漏,否则将直接顺序执行下面的语句,不进行判断

3.循环结构

循环结构包括四个组成部分:

  • 初始化部分
  • 循环条件部分
  • 循环体部分
  • 迭代体部分

进行嵌套循环时,尽量保证外层循环次数小于内层循环

1.for循环

for (初始化表达式①;布尔测试表达式②;更改表达式){
	语句;
	语句;
	...;
	//循环体
}
for(;;){
	...;
}
//无限循环

2.while循环

int i=1;//初始化表达式
while (i<=100){//布尔测试表达式
	语句;
	语句;
	...;
	//循环体
	i++//更改表达式
}
while(true){
	...;
}
//无限循环

3.do/while循环

int i=1;
do	{
	语句;
	语句;
	...;
	//循环体
	i++;
	//更改表达式
	}while(i<=100)//注意分号不要遗漏
	//布尔测试表达式
	//满足while条件时,循环继续执行,不满足则退出

与while循环区别在与会先执行一次循环体,再进行判断循环条件

4.特殊流程控制语句

1.break

终止当前所在的循环,只针对循环

2.continue

结束当前这次循环,直接进入下次循环
可以通过标签指名要跳过的是哪层循环

  • 标签的用用法:标识符加冒号":"的形式,如“mylabel:”。
  • Java 的标签只能定义在三种循环 (for() {}, do{} while(), while() {}) 的开始位置。
  • 在循环前面加上标签,就好像给循环起了个名字。而后在循环中使用 break 或者 continue 语句的时候,就可以带上这个标签做为参数,指明跳出 (break) 或者继续 (continue) 哪一个循环,如“break mylabel;”、“continue mylabel;”。

continue是终止本次循环,break是终止本层循环

3.return

结束当前方法

四.数组

1.一维数组

1.数组的定义/初始化

动态初始化: int a [] = new int [4];或者 int [] a = new int [4];
(默认初始化数组元素为"0")
静态初始化: int a [] = new int [] {1,2,3,4};或者 int [] a = new int [] {1,2,3,4};

2.数组元素的引用

数组名[数组元素下标]
数组元素下标从"0"开始,0~n-1;

3.数组的长度属性

数组名.length=n
数组一旦初始化,其长度是不可变的

2.多维数组

1.数组的定义、初始化

1.动态初始化: int a [][]= new int [2][3];
或者 int [][] a = new int [2][3];
或者 int []a[] = new int [2][3];
(默认初始化数组元素为"0")
2.静态初始化:

int a [][] = new int [][] {
						   {2,6,3},
						   {7,3,1}
						  }

3.只定义第一维的长度
int a [][]= new int [2][];
//?疑问,会导致空指针异常

2.数组元素的引用

基本同一维数组
注意:特殊写法 int [] x, y [];表示x为一维数组,y为二维数组

3.数组中涉及的常见算法

1.求数组的最大值、最小值、总和、平均数

遍历数组元素

int arr0 [][] = new int [][] {
   		{1,5,9},
   		{3,2,6}
   	};
int max = 0 ;
for (int i=0; i< arr0.length; i++) {		//遍历第一维数组
   int arr1 []= arr0[i];
   for (int j=0; j<arr1.length; j++) {		//遍历第二维数组元素
   		if (arr1 [j] > max) {
   		max = arr1 [j];						//取最大值
   		}
   }
}
   	System.out.println(max);//循环结束后输出

2.数组的复制、反转

数组元素的遍历、设置临时的数组

3.数组元素的排序

  1. 插入排序
    直接插入排序、折半插入排序、Shell排序

  2. 交换排序
    冒泡排序、快速排序(或分区交换排序)

  3. 选择排序
    简单选择排序、堆排序

  4. 归并排序

  5. 基数排序

4.数组常见错误

  1. 数组下标越界异常
    ArrayIndexOutOfBoundsException

  2. 空指针异常
    NonePouintersException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code tea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值