Java的学习-java语言基础

一、java中的常量和变量

  • 常量:数据值不改变,生活中的数字
  • 变量:值可以改变,a+b=10 a=1 a=2 a的值发生了改变

变量在定义时要首先定义数据类型:例如byte a=127

二、Java中的数据类型

1.整数类型(四种)

  • byte:字节类型------->电脑上文件大小的衡量单位

(1)计算机进行数据存储,以二进制的位(bit)进行存储------->通过位进行存储

(2)建立字节和位的关系:1type=8bit,字节范围:-128到127;

(3)java的字节是有符号的数字,最前面的一位进行符号的存储 0:正数 1:负数

(4)将数据类型看成是一个容器;

  • short:短整型 占用2个字节是16位

范围:负的2的15次方到2的15次方减1------->-32768到32767

  • int:整型 占用4个字节 32位

范围:负的2的31次方到2的31次方减1------->-2147483648到2147483647

  • long:长整型 占用8个字节 是64位

存储范围比较大,存储范围比int大;范围:负的2的63次方到2的63次方减1

如果定义了byte变量,数据值在byte范围内,使用byte进行变量接收;

如果定义了short变量,整数值在short变量内,使用short进行变量接受;

不在byte和short范围内,int接受=======》java书写的整数的数字默认是int类型;

定义long类型的数据,为了和int进行区分,加后缀L或l推荐使用L。

为什么要定义很多中数据类型

(1)定义变量时要指定数据类型,每个数据类型要占用不同的字节数;

(2)程序在运行时,要在内存中进行空间的占用,内存空间相对比较小======》合理的利用内存空间,选择合适的数据类型。

(3)例如有的数字如果是1,那么用一个long类型存储有点浪费空间,但是如果是很大的数又超出了小的数据类型,所以要根据不同的数字范围定义不同的数据类型。

byte和short在面试题中用;int和long在编程中常用。

2.小数类型

  • float :单精度小数======》小数位数较少======》精确度低 ,4个字节

小数位最后一位不准确,一般float的小数位是7位,可能会变

float类型,如果赋值有小数点,必须加f;如果没有小数点,可以不加f。

  • double:双精度小数======》小数位较多======》精确度高 ,8个字节

小数类型默认是double,所以在一开始进行float数据定义时后缀要加f,不然会报错:float=3.12f才不会报类型错误。

double的小数位是16位,可以加后缀D或d

double在编程中用的多一些;

3.字符类型

char类型:进行符号的存储,2个字节,存储一个字符,用单引号

计算机存储二进制的数字======》建立字符和二进制的关系

ascll码表:范围比较小=====》1-127

每个国家有自己的编码集

中文:gbk2312

中文;gbk

unicode编码集:

中文:utf-8

a=====》97;A=====》65;0=====》48

4.布尔类型

true和false 例如:bolean b1=true;

小结

(一)java的数据类型:

基本数据类型:8种======》简单类型

引用数据类型:3种

(二)java中变量命名规则:

(1)严格区分大小写

(2)变量中可以有数字、字母、下划线、$(数字不能开头);

(3)java中的关键词或保留字不能作为变量名;

(4)变量名见名知意;

(5)驼峰命名;int setAge 小驼峰(第一个单词的首字母小写) int SetAge 大驼峰(第一个单词首字母大写)

(三)变量定义:

数据类型  变量名(=值)

(1)修改变量上的值:变量名=值

(2)使用变量时要给变量赋初始值,初始化,要不然不能使用

三、数据类型转换

(1)数据类型从小到大进行转换:=====》自动转换

        大的容器接收小容器的数据,不会报错

        int可以接收char类型     

    整数和小数的转换:

      float可以接受long int byte======》比整数大的数据类型

      double类型是当前最大的数据类型;

(2)小数据接收大范围数据======》不能自动转换

前提是大范围数据不超过小范围数据======》强制数据类型转换

例如byte a=(byte)100;

为什么要进行数据类型转换?

一开始定义的变量选择的数据类型不合适,需要进行数据类型转换;

大范围的数据类型转换为小范围的数据类型需要强制数据类型转换,如果是数据类型从小到大进行转换,那么会自动转换。

四、数据之间的运算

1.根据数据运算,参与运算数据的个数:

(1)参与运算数据的个数只有一个 :一元运算符

(2)参与运算数据的个数有两个:二元远算符

(3)参与运算数据的个数有三个:三元运算符

2.根据运算后结果的类型:

2.1运算后的结果是数字类型:

  •   算术运算符:+ - * / %

布尔类型不能进行算术运算

(1)参与运算的数据类型是相同的:

        注意:byte+byte 结果默认是int;

       int+int 结果默认是int;

       long+long 结果默认是long;

       short+short 结果默认是int;

(2)参与运算数据的类型不相同

·结果的类型默认是参与运算数据的比较大的类型一致;

注意例外:byte和short运算结果默认为int类型

  • char类型运算:字符与数字进行运算

(1)字符和数字进行加法运算======》结果的类型取决于我们用什么类型进行接收

例如:char a= ‘a’+1 结果是字母b;int a=‘a’+1结果是数字98

(2)字符进行运算时,得到的数字没有问题,但是数字对应的字母可能电脑打不出来;0-31的字符是非打印字符。

char+int 结果默认是int类型

  • 赋值运算符(复合运算符):赋值运算符 int a=-1;byte=+byte 结果还是byte类型

(1)和算术运算符的差别:赋值运算符运算结果是用指定的类型进行的接收,不会进行类型改变。

(2)赋值运算是从左向右进行的

  • 自运算运算符:++  --

运算符和变量名的关系:(1)变量名在前,运算符在后:先用变量值再做运算

                                  (2)远算符在前,变量名在后:先加后用变量值

运算符优先级:自运算 > 算术运算 >赋值运算符

2.2运算后的结果是字符串类型

  • 字符串拼接+

字符串和其他任何类型进行+运算,得到的都是字符串类型;

2.3运算结果是布尔类型

  • true是成立    false是不成立
  • 关系运算符

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

        算术运算符的优先级高于关系运算符

  • 逻辑运算符:连接关系表达式,对多个关系进行标识

(1)&&并且 

短路运算:前面表达式的运算结果可以决定这个表达式的结果,后面的表达式不执行。

例如:a>b结果是false,无论后面的结果是什么,整个结果是false,后面的表达式没有必要执行。

(2)|| 或者 

只要有一个表达式的结果是true,整个表达式的结果就是true,两个都是false才会false。如果前面是true,也会进行短路运算。

(3)!取反:只能针对于布尔类型进行取反

关系运算符的优先级高于逻辑运算符的优先级

  • 其他运算符

(1)&并且 

全路运算符:1·连接关系表达式,不管前面的表达式是否可以决定整个表达式的结果,后面的都执行。

                     2·连接的是数字,结果是数字类型,进行的是位运算,进行与运算

(2)|或者

1·只要有一个成立整个表达式的结果是true,否则结果是false

不管前面的表达式是否可以决定整个表达式的结果,后面的都执行。

2·连接数字进行或的位运算。

(3)>>  数字 :右移几位       << 数字:左移

(4)^异或运算

  • 三元运算符

参与运算数据的个数有三个;

结果是boolean表达式?成立值1:不成立值2

a>b? true:false;

数据的结果,根据条件进行判断,条件不同时,出现的结果不同的

结果是布尔类型的式子? 表达式1:表达式2

注意:表达式1和表达式2的数据类型要保持一致,如果表达式1是int类型,表达式2是double类型,int类型自动转double类型。

五、流程控制语句

1.条件判断分支语句

  • if语句判断,如果条件成立,执行一般语句

if(要判断条件是否成立){

成立时执行的语句;

}else if(其他条件的判断){

条件成立时执行的语句;

}else{

最后执行的语句;

}

多条件的判断,条件不可以重复,如果重复,后面匹配就不会执行,虽然不会出错

  • Switch case:具体数据值的匹配

switch()//可以放的类型:byte short int char String  对应引用数据类型(Byte,Shorter,Integer Character,String)  enum(枚举){

case 1:

break;//在一个条件结束时必须写,要不然会一直往下执行,直到执行到下一个break

default:break;//最后执行的语句,不管放在哪都是最后执行,位置可以放在前面

}//case后的值不能重复

如果条件少可以使用switch判断,如果条件较多就用if else

2.循环语句:相同逻辑的代码重复执行

java循环需要的三个要素:循环初始值;循环条件;更新初始值

  • for

优点:三个要素语句中,可以写在一起

应用场景===》知道循环次数,使用for循环

变量作用域问题:包含定义变量语句的{}

变量在哪定义就在哪使用;

  • while

知道循环条件,不知道次数,使用while;===》三要素分开写

  • do while

int i=10

do{

System.out.println(1);

i--;

}while(i>0);

如果循环条件不满足,执行一次循环;如果循环条件满足,正常执行循环。

·1循环中断关键词:

continue:当前循环不执行,不影响后面的执行;

break:书写位置:switch中,for中结束当前循环,循环外的代码依旧可以执行

return:方法的结束,不管方法中是否 进行了return的书写,默认有return

·2程序的入口:main()方法

·3死循环:循环不能停止,循环条件恒成立

六、.数组-引用数据类型1

数组:一个变量存储多个值,一组数据放到一个变量存储

优点:一个变量可以存储多个值

缺点:数组一旦定义,长度不可修改

1.定义数组的方式:

数组声明的两种方式:int[] nums;   int nums[];

数组中存储的数据的数据类型[] 变量名={值,......}

  • int[] arr={1,2,3,4,5}已经知道每个位置上的内容;
  • int[] arr = new int[10]定义数组,不知道每个位置上具体数据;进行创建时,每个位置都有自己的默认值;
类型

整型:

byte,short,int,long

浮点型:

float,double

字符型:char布尔型:boolean
默认值00.0ascall码值是0的字符false
  • int[] arr=new int[]{12,23,45,345}结合的定义;

2·访问数组内容的方式

  • 增强for(foreach)查看数组中的数据:

  for(接收的类型  接收的变量名:数组名){}

  • 使用for循环查询数组内容

                        for(int  i=0;i<数组的长度;i++){}

3.数组下标越界报错

Exception int Thread “main” java.lang.ArrayIndexOutOfBoundException:11数组下标越界

4.数组相关的操作:

冒泡排序:从小到大的顺序,数组中的数据模拟冒泡

二分查找:提高查找的效率

java中逻辑重复的代码:

(1)循环解决:重复进行的一个变量数据的操作

(2)不同变量执行相同逻辑,===》方法进行功能实现

方法:

具有某种功能的代码

main方法:java程序的入口,是方法

main方法具有了功能:程序入口的功能

=======》定义一个方法,方法赋予功能

由数组相关操作的重复性引出方法的功能,见下一篇。

总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小猿F

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

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

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

打赏作者

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

抵扣说明:

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

余额充值