第一节 java语言基础韩顺平

第一节 java语言基础

1.变量与数据类型

1.1 变量

变量就是内存的一块存储区域。不同类型的变量所占用的内存大小不同。

变量的作用域

1.2 数据类型

基本数据类型:byte、short、int、long、(数值型)占字节数:1248

float、double、(浮点型)

boolean、char(字符型)

引用数据类型:类(class、string)、接口、数组

**整型:**默认int。int n = 1l;//错误,因为不能把大内存的值赋给小内存。

**浮点型:**有符号位+指数位+尾数位。默认是double,声明成float需要加f或F。通常情况下都用double,因为double更精确。

浮点数细节:当我们判断的运算结果是小数时,2.7与8.1/3 不应该用==,而是两个数相减的绝对值。Math.abs(num1-num2)<0.00001。但是2.7和2.7比较是相等的。

JAVA API文档:用于查找类和对应的方法

API:就是JDK中提供各种功能的java类。

字符型:‘a’ ,‘顾’ ,’97 ‘、‘\t’ 输出:a 顾 a 制表符

char的本质是一个整数,输出时,默认是unicode编码对应的字符。97->a。

计算,‘a’+10 因为char本质就是数字,所以计算后输出 107。

字符型本质探讨:字符型在计算机中想要存储,要先找出其对应的码值(整数),把整数转换为二进制,然后存储到计算机中。

**布尔型:**1字节,boolean类型不可以用0,1或者其他整数表示真假,只能用true,false。

自动类型转换:小到大的转换。低精度到高精度。

使用细节:1.多种类型混合计算,自动转换成精度最高的类型;2.byte、short、char之间不会自动转换。

3.byte、short、char之间进行运算时,会首先转换成int类型进行计算。byte+byte 也会首先转换成int类型再计算。

4、boolean不参与自动类型转换。

强制类型转换:自动类型转换的反方向。大到小。

强制转换符,如(int)1.1 结果为1,会造成精度丢失。或者数据溢出。

使用细节:1.强制转换符只针对最近的操作数有效。

int m=10;

char n =m;//错误,因为m是int类型的变量,改成char n=(char)m即可。

基本数据类型—>String

int n1=100;

String s1=n1+“”;

String—>基本数据类型

使用基本数据类型对应的包装类中的parseInt方法。

如String s = “123”;

int num1=Integer.parseInt(s);//其他类型同理可得。

提问:怎样把字符串转成字符char –> 把字符串的第一个字符取出来

String s5 = “123”;

s5.charAt(0);//输出字符1

注:字符串转换成基本数据类型必须保证是有效的数据,如转换成int,字符串可以是“123”,不能是“hello”。

+号在字符串,字符,数值型中,效果是不一样的。

2.运算符与表达式

2.1算术运算符

正负加减乘除,取模,前增后增,前减后减。

2.2关系运算符(比较运算符)

==,!=,<=,>=,<,>,instanceof

2.3逻辑运算符:

用于连接多个条件。有短路与&&,短路或||,取反! 逻辑与&,逻辑或|,逻辑异或^. 短路的含义是当前面的判断不符合时,后面的条件不再判断。因此,短路的效率更高。

2.4赋值运算符:

=,+=,-=,/=,%=

使用细节:1.从右往左进行运算

2、赋值运算符的左边只能是变量,右边可以是变量,表达式,常量值。

3.复合赋值运算符会进行类型转换。

b+=2,等价于b=b+2,按理说是不可以的,因为b+2已经变成int类型进行计算了,因为复合赋值运算符会自动变成b=(byte)b+2,所以可以通过编译。

2.5 三元运算符:

语法:条件表达式?表达式1:表达式2;

使用细节:表达式1和表达式2必须为可以赋值给接收变量的类型,或者可以自动类型转换或强制类型转换。

运算符优先级:看表格。

排序:(){},单目运行++,——;算术运算,位移运算,比较运算,逻辑运算,三元运算,赋值运算

java的标识符:

变量,方法,类,凡是自己可以起名字的都是。**标识符有命名规则和规范。**规则:如不可以使用关键字和保留字;严格区别大小写。

规范:包名,所有字母小写。类名,接口名:所有单词首字母大写,XxxYyyZzz。变量名,方法名:多单词组成时,第一个字母小写,后面字母大写,xxxYyyZzz。常量名:所有字母大写,多单词用下划线连接,TAX_RATE。

关键字:被java语言赋予了特殊含义的单词。
保留字:现有java版本未使用的关键字,但未来可能会使用。

3.控制流程语句

3.1 顺序

3.2 分支(if,else,switch)

3.3 循环 无限循环:for(;;),while(true)

switch使用细节:1.switch表达式的类型必须和case后的常量类型一致或者可以自动转换。switch表达式中的返回值必须是btye、short、int、char、enum、String

if和switch的比较:

1.判断的具体数值不多,并且符合btye、short、int、char、enum、String,用switch。

2.对区间,boolean类型判断,用if

3.3 循环(for,while,dowhile,多重循环)

3.4 break,continue,return

break用于跳出当前循环或switch语句。

continue用于跳过当前循环的剩余部分,直接进入下一次循环。

4.方法的使用(第二节)

5.数组(排序、查找)

5.1 数组定义:

int a[] = new int[10];//动态初始化,int a[]是声明数组,为null,new int[10]是为数组分配内存空间。

double[] hens ={3,5,1,3.4,2,50} ;//这是静态初始化

取数组中的元素:double n = hens[i];

使用细节:1、数组中的元素可以是基本数据类型,也可以是引用数据类型,但是不可以混用。2、数组属于引用数据类型,数组型的数据是对象。

5.2 数组赋值机制:

是引用传递,赋的值是地址,arr1和arr2是会相互影响的,因为他们指向同一块内存空间。而基本数据类型的赋值是值传递,不会相互影响。

5.3 数组翻转方法:

1.观察规律2、逆序输出

5.4 数组扩容

开辟一个新的数组,拷贝之前的数组后,然后把用户输入的值赋值给最后一个元素,最后询问用户是否继续添加,整个流程用do while、break来实现。

5.5 二维数组

定义:

方式一:int [] [] arr = new int [2] [3] ;

方式二:int [] [] arr ;//先声明

arr= new int [2] [3] ;//再创建,为什么要这样呢?因为实际的创建可能要看用户的需求,根据用户的输入确定。

方式三:int[][] [][] [] [] arr = {{},{},…} ;//理解:原本一维数组的每个元素变成了一个一维数组,就构成了二维数组。

遍历:双重for循环。

**内存分配:**第一个首地址arr指向二维数组的首地址,在堆中,这个首地址分成了2块内存空间,每个内存空间中保存了其一维数组的首地址。如arr[0]和arr[1]。根据存放的首地址,可以找到以arr[0]为首地址的另一块内存空间,里面分成3块内存,分别存放一维数组里的每一个元素。

注:1、二维数组里每个一维数组的元素个数可以是任意的。

2.一维数组声明类型:int[]x,int x[];

二维数组声明类型:int x[] [] ,int []x[],int [] [] x。

练习:杨辉三角

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值