2.分类
基本数据类型
数值型
整数型(Byte;Short;Int;Long)
浮点型(Float;Double)
字符型(char)
布尔型(boolean)
引用数据类型
类,数组,接口。
Java中共11种数据类型,其中8种基本类型,3种引用类型
3.类型使用
3.1整型
Java语言整数型默认为int类型,如果要声明成long类型在变量值后加入L,如:long l = 123L
类型 | 占用存储空间字节数 | 数值范围 |
byte | 1 | -128~127 |
short | 2 | -2的15次方2的15次方-1(-3276832767) |
int | 4 | -2的31次方~2的31次方-1 |
long | 8 | -2的63次方~2的63次方-1 |
Java整型常量的三种表示方法
十进制:如123=1*100+2*10+3*1=123
八进制,八进制0开头:如:013=1*8+3*1=11
十六进制,十六进制0x开头:如:0x23=2*16+3*1=35
3.2浮点型
浮点声明默认是double类型,若要是float,请在尾部添加f或是F。如:float myFloat=1.23
类型 | 占用存储空间字节数 | 数值范围 |
float | 4 | -3.4E38 ~ 3.4E38 |
double | 8 | -1.7E308~ 1.7E308 |
两种表示形式 十进制形式:例如:123.456 0.314 科学计数法
3.3布尔型
适用于逻辑运算,用于程序流程控制
只允许取值为true,false,不可以任何其它形式代替
3.4字符型
占用字节数是16bit,但是范围是0-65535,因为没有负数。
通常意义上的字符,用单个引号括起来的单个字符
如’1’,‘a’,'b’等等
转义字符,用’\n’来表示,即为转变之前的意义,但依然是个字符
char c=‘\n’; //表示换行符
4.类型转换
8种基本类型中,除了boolean布尔型,其他7种类型,都可以进行转换
精度由低到高可以自动转换
精度由高到低需要强制转换
自动类型转换:byte>>short>>int>>long>>float>>double
char>>int>>long>>float>>double
强制类型转换:规则: 低精度类型 名字 = (低精度类型)高精度类型数据
三.变量
1.常量
生命周期中,可以复用,但值不可修改
一般会使用final修饰
2.字面量:
也是常量的一种,不能复用,不能修改。
3.变量
在生命周期中,值是可以修改的。
3.1变量声明
a.数据类型 变量名; 只创建变量,但不赋值
int a;
b.数据类型 变量名 = 值;创建变量并赋值
int b = 2;
c.数据类型 变量名 ,变量名, …;同时声明多个变量
int a,b,c;
d.数据类型 变量名=值,变量名=值,…;同时声明多个变量并赋值
int a=1,b=2,c=3;
同作用域中,变量名不能重复;一个{}就是一个作用域
注意 不能先使用后申明
3.2变量分类
局部变量:在方法中创建的变量,是局部变量(main{})
静态变量:在类体中,使用static修饰的变量,是静态变量(类名{})
成员变量:在类体中,没有使用static的变量是成员变量
public class Var_1{
//成员变量
int a = 1;
//静态变量
static int b =2;
public static void main(String[] args){
//局部变量
int c = 3;
}
}
3.3变量调用优先级
public class text3 {
static int a =1;
public static void main(String[] args) {
//如果静态变量和局部变量同名,则局部变量优先级高
int a =9;
//此时访问的是局部变量 9
System.out.println(a);
//访问静态变量应加上类名
System.out.println(text3.a);
}
}
3.4默认值
public class Var_05 {
// 静态变量和成员变量都有默认值
// 整数 默认0 , 小数默认 0.0 , 布尔型默认 false ,
// 字符型默认 \u0000 , 引用类型默认 null
static int a ;
static double b;
static boolean flag ;
static char c;
public static void main(String[] args) {
// 局部变量没有默认值,不赋值,不能使用
// int a;
// System.out.println(a);
System.out.println(a);
System.out.println(b);
System.out.println(flag);
System.out.println(c);
}
}
四.运算符
释义
用于表示数据的运算、赋值和比较的一系列符号我们称之为运算符。
分类
运算符按功能划分如下:
运算符类型 | 运算符 |
算术运算符 | +,-,*,/,++,–,% |
关系运算符 | <,<=,>,>=,==,!= |
布尔/逻辑运算符 | &&, |
位运算符 | &, |
赋值类运算符 | =, +=, -=, *=, /=, %= |
字符串连接运算符 | + |
条件运算符(三目运算符) | ? : |
其他运算符 | instanceof,new |
1.1算术运算符
类型 | 描述 | 示例 |
++(自加运算符) | ++在变量前面时,先做运算后赋值++在变量后面时,先做赋值后运算 | i = 1, j; j = ++i; 则j=2;i = 1, j; j = i++; 则 j = 1 |
–(自减运算符) | 同上 | i = 1, j; j = - -i; 则 j = 0;i = 1, j; j = i- -; 则 j = 1; |
public class Operator_01 {
public static void main(String[] args) {
int a = 10;
int b = 3;
// 13
System.out.println(a + b);
// 7
System.out.println(a - b);
// 30
System.out.println(a * b);
// 3
System.out.println(a / b);
// 1
System.out.println(a % b);
// 3.3333333333333335
System.out.println(10.0 / 3.0);
// 千万不要使用小数 进行相等判断
// 0.30000000000000004
System.out.println(0.1 + 0.2);
// ++ : 一元运算,优先级是大于二元的
// ++ : 把原来的数据+1,在放回去
int i = 10;
// 当i++ 或 ++i 单独出现的时候,没有啥区别,都是直接+1 就行了
// i++;
// ++i;
// 当参与混合运算的时候, i++ 先赋值 后+1 , ++i 先+1 后赋值
// i = i++ + 2;
// i = ++i + 2;
// i = i++ +i;
i = i++ + 5 + ++i + i;
// i = 10 + 5 + 12 + 12; i = 12;
System.out.println(i);
int x = 10;
x = 10 + x++ + ++x + (10 * x++) + ++x + x;
// x = 10 + 10 + 12 + (10 * 12) + 14 + 14; x = 14
// x = 166 + 14; x = 14
System.out.println(x);
}
}
1.2关系运算符
注意 ‘==’关系运算,其意义为全等,基本数据类型比较值,引用数据类型比较地址
关系运算符结果一定是布尔类型 true/false
1.3逻辑运算符
与 &:两个操作数相与,如果都为true,则为true
或 |:两个操作数相或,有一个为true,则为true
异或 ^:相异为true,两个操作数不一样就为true,相同为false
短路&& 和 逻辑& 区别?
1.短路与,从第一个操作数推断结果,只要有一个为fase,不再计算第二个操作数
2.逻辑与,两个操作数都计算
短路|| 和 逻辑| 区别?
1.短路或,从第一个操作数推断结果,只要有一个为true,不再计算第二个操作数
2.逻辑或,两个操作数都计算
1.4赋值运算符
1)当 “=” 两侧数据类型不一致时,适用默认转换或强制转换处理,如long num=20;int i=(int)num;
2)特殊情况为:当byte,char,short被整赋值时,不需要进行强制类型转换,不超过取值范围即可。即一个自动装载的过程。
char c=100;byte b=20; //正确
char c2=-99999;byte b2=128; //类型越界错误
运算符 | 用法 | c |
+= | a+=b | a=a+b |
-= | a-=b | a=a-b |
*= | a*=b | a=a*b |
/= | a/=b | a=a/b |
%= | a%=b | a=a%b |
1.5字符串连接运算符
- “+” 可用于数值计算,当有一方是字符时,则为将左右两个数据转化成字符串连在一起。如int i=10+20;String j=“10”+“20”。
- 当" +" 任意一侧为字符串时,系统将自动将两侧转化成字符串,做字符串链接操作。
- 当进行System.out.println(var)打印操作的时候,均自动转化为字符串进行输出。
1.6运算优先级
优先级 | 运算符分类 | 结合顺序 | 运算符 |
由高到低 | 分隔符 | 左结合 | . [] ( ) ; , |
一元运算符 | 右结合 | ! ++ – - ~ | |
算术运算符移位运算符 | 左结合 | * / % + - << >> >>> | |
关系运算符 | 左结合 | < > <= >= instanceof == != | |
逻辑运算符 | 左结合 | ! && | |
三目运算符 | 右结合 | 布尔表达式?表达式1:表达式2 | |
赋值运算符 | 右结合 | = *= /= %= += -= <<= >>= >>>= &= *= |
1.7混合运算
public class Operator_02 {
public static void main(String[] args) {
// 当一个计算公式中 ,出现了很多种数据类型的时候
// 运算结果,是参与运算的最大数据类型
// 比如 byte int float 进行运算 , 结果是 float类型
byte b1 = 22;
int i1 = 223;
long l1 = 23;
float f1 = 22.6F;
float result = l1 + i1 + b1 + f1;
// 如果只有 byte short int char 四种类型中,任意一种或多种进行运算
// 结果都是int类型
int s = b1 + b1;
}
}
五.表达式
表达式是指由(常量、变量、操作数)与运算符所组合而成的语句。
- 符合语法规则的运算符+操作数,即为表达式,如:5+3,2.0+3.0,a+b,3%2
- 表达式最终运行结果即为表达式的值,值的类型就是表达式的类型
- 运算符优先级,决定表达式的运算顺序
六.流程控制结构
1.顺序结构
顺序结构程序就是按语句出现的先后顺序执行的程序结构。计算机按顺序逐条执行语句,当一条语句执行完毕,自动转到下一条语句。
2.分支结构
1)分支结构又称为选择结构。当程序执行到控制分支语句时,首先判断条件,根据条件表达式的值选择相应的语句执行(放弃另一部分语句的执行)。
2)分支结构包括单分支、双分支和多分支三种形式。
2.1单分支
if(布尔表达式){语句块;}
2.2双分支
if(布尔表达式){
语句块;//if分支
}else{
语句块;//else分支
}
2.3多分支-1
if(布尔表达式){
语句块;
}else if(布尔表达式){
语句块;
}else{
语句块;
}
2.4多分支-2
switch (表达式) {
case 值1:
语句;
break;
case 值2:
语句;
break;
default:
语句;
break;
}
注意:如果分支没有break终止,则找到符合的条件时,会把下面所有的case分支都执行
3.循环结构
3.1while语句
while(布尔表达式){
循环体; //一条或多条语句
}
【示例】
int i = 1;
while(i<=5) {
System.out.println(i);
i++;
}
3.2do…while语句
do {
循环体;
}while(条件判断表达式);
【示例】
int i = 1;
do{
System.out.println(i);
i++;
}while(i<=0); //注意分号
3.3for语句
for(表达式1;表达式2;表达式3) {
循环体; //一条或多条语句
}
【示例】
for (int i=1; i<=5; i++) {
System.out.println(i);
}
3.4嵌套循环
循环中还有循环;外层执行一次,内层执行一轮
例:1.九九乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
// 没有ln 就不会换行了
System.out.print(j+"x"+i+"="+(j*i) + " ");
}
// 换行
System.out.println();
}
例:2.鸡兔同笼
for (int x = 1; x < 35; x++) {
int y = 35 - x;
if (2 * x + 4 * y == 94) {
System.out.println("鸡有" + x + "只,兔子有" + y + "只");
}
}
4.终止语句
4.1break
两种用法
用在switch中,用于结束case分支,防止case穿透现象
用在循环中,用于终止循环执行
public class _01_Break {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
if (i == 59) {
// 终止循环执行
// 场景一:在一堆数据中找某个数据,找到之后,就不需要再看剩下的数据了
System.out.println("找到啦");
break;
}
System.out.println(i);
}
}
}
4.2continue
跳过当前循环,相当于不执行了,直接执行i++
public class _02_Continue {
public static void main(String[] args) {
for (int i = 1; i < 100; i++) {
// 场景1 : 在一堆数据中进行筛选,不符合条件的数据就不要了
// 比如 1~100内 不要能被3整除的数据
if (i % 3 == 0) {
System.out.println("不要 : "+i);
continue;
}
System.out.println(i);
}
}
}
4.3outfor
public class _03_OutFor {
public static void main(String[] args) {
// 对外层循环设置一个名字
outFor: for (int i = 0; i < 6; i++) {
for (int j = 0; j < 4; j++) {
if (j == 2) {
// break 终止循环执行,但是在嵌套循环中,只能终止近层循环
// continue 跳过当前次循环,但是在嵌套循环中,只能跳过近层
// 使用的时候,只需要在后面加上名字 即可操作外层循环
// break outFor;
continue outFor;
}
System.out.print(j + " ");
}
System.out.println();
}
}
}
七.方法
1.概述:
一堆代码的集合,一般完成了某个特定的功能,
当我们再次使用这个方法的时候,就等于使用了这些代码。
方法的目的:代码复用;提高程序的灵活度;易维护;易扩展
2.方法的作用:
- 使程序变得更简短更清晰
- 有利于程序维护
- 提高程序开发效率
- 提高代码重用性
3.方法声明
3.1语法格式:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-YNfkFNI4-1712477428631)]
[外链图片转存中…(img-MWuQZ6qU-1712477428632)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)