Java基础知识(入门篇),全世界都在问Java开发凉了吗

浮点类型也可以采用科学计数法的方式:5.12e2 = 5.12 × 10 ^ 2。

字符类型

允许写这种方式:

char c1 = 97;

char c2 = ‘\t’;

java中char的本质就是一个整数,输出时输出的是它对应的编码。所以char类型是可以进行计算的。

字符类型存储到计算机的过程:

‘a’—>字符编码是97—>二进制是1100001—>存储

从计算机读取的过程:

二进制1100001—>字符编码97—>‘a’—>显示

布尔类型

boolean = true or false

布尔类型的值占用1个字节

3、字符集与字符编码(♥♥♥)

计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如’a’用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致’a’解析成’b’或者乱码。

  • ASCII字符编码:主要包括控制字符(回车键、退格、换行键等);可显示字符(英文大小写字符、阿拉伯数字和西文符号)。

ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数的规则。使用7位(bits)表示一个字符,共128字符;但是7位编码的字符集只能支持128个字符,为了表示更多的欧洲常用字符对ASCII进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。

  • Unicode字符编码:包含了非常多的字符,每个字符的编码都不同,所以不会有乱码问题。一个英文字母和汉字都占用2个字节,可能会存在冗余。

  • UTF-8字符编码:是一种针对Unicode的可变长度字符编码定长码),也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,现在使用最广泛。字母占1个字节,汉字占3个字节

4、数据类型转换

img

自动类型转换

image-20211022104611702

细节:

  • 多种类型数据计算的时候,会把它们先转换成类型最大的那个

  • (byte、short)和char之间不会进行自动类型转换

  • byte、short、char类型之间可以进行计算,但先要转成int类型

  • 自动提升原则:计算后,结果转成类型最大的那个

强制类型转换

将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 精度降低或溢出,格外要注意。

细节:

  • 强转符号只针对最近的操作数有效,所以一般会在后面数据操作加上括号

  • char类型可以保存int类型的值,但如果保存int类型的变量需要强转

数据类型和String类型转换

//基本类型转String

String s1 = 某基本数据类型的值 + “”;

//String转基本数据类型,调用基本数据类型包装类.parse方法即可,如下:

int i1 = Integer.parseInt(“123”);

//注意String类型不能用这种方式转char类型,因为字符串包含多个字符,可以使用charAt方法

char c1 = s1.charAt(index);

5、运算符

运算符分类

  • 算术运算符

  • 赋值运算符

  • 关系运算符 [比较运算符]

  • 逻辑运算符

  • 位运算符 [需要二进制基础]

  • 三元运算符

算数运算符

image-20211022105731611

说明

除号/,如果10/3结果是整型不是浮点型

对一个数据取模,比如a % b,等同于a - a / b * b

或者可以这么认为,取模的符号和左边的数相互一致:

7 % 3 = 1;-7 % 3 = -1;7 % -3 = 1

经典习题

i = 10;

i = i++;

System.out.println(i);

赋值运算符

下面这些都是赋值运算符:

int a = 10;

a += 1;

a -= 1;

赋值运算符会进行类型转换:

byte a = 2;

a += 1;

//上面这个等价于 a = (byte)(a+1);

关系运算符

image-20211024181143573

关系运算符的结果都是boolean类型,要么是true,要么是false。

逻辑运算符

image-20211024181520138

逻辑与&,逻辑或|,逻辑异或^

短路与&&,短路或 ||,取反

短路&&,只要第一个为false那后面不判断,短路或||,只要后面有一个为true后面不判断。

public static void main(String[] args) {

int x = 5;

int y = 5;

if (x++== 6 & ++y== 6){

}

System.out.println("x = " + x + " y = " + y);

}

//x = 6;y = 6

public static void main(String[] args) {

int x = 5;

int y = 5;

if (x++== 6 && ++y== 6){

}

System.out.println("x = " + x + " y = " + y);

}

//x = 6;y = 5

三元运算符

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

为true执行表达式1,false执行表达式2。

public static void main(String[] args) {

int a = 10;

int b = 99;

int result = a > b ? a++ : b++;

System.out.println(“result=” + result);

System.out.println(“a=” + a);

System.out.println(“b=” + b);

}

题目:计算三个数中最大的那个

public static void main(String[] args) {

int num1 = 270;

int num2 = 25;

int num3 = 104;

int bigNum1 = num1 > num2 ? num1 :num2;

int max = bigNum1 > num3 ? bigNum1 : num3;

System.out.println(“最大的数是:” + max);

//或者

int max = (num1 > num2 ? num1 : num2) > num3 ? (num1 > num2 ? num1 : num2) : num3;

System.out.println(“最大的数是:” + max);

}

位运算符

image-20211024182119514

算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位

算术左移 <<: 符号位不变,低位补 0

逻辑右移 >>>:也叫无符号右移,运算规则是: 低位溢出,高位补 0

运算符的优先级

在这里插入图片描述

其中最需要注意的就是:逻辑与、逻辑或、逻辑非的优先级

逻辑非 > 逻辑与 > 逻辑或

//好好看这个例子

boolean s1 = true,s2 = true,s3 = false;

System.out.println(s1 || s2 && s3);//true

6、进制换算

常用的进制的符号:

  1. 十进制就是直接写即可

  2. 八进制要求以0开头,比如:015

  3. 十六进制:0x开头,比如:0x15

  4. 二进制:要求0b或0B开头,比如0b11011

其他细节:

  • 其他进制转换成十进制,按照每一位进行计算,最后一位是进制的0次方,依次往前算

  • 十进制转换成其他进制,拿这个数除以换算的进制,取余数并且反向输出即可

  • 二进制转八进制,每3位一组去计算即可

  • 二进制转十六进制,每4位一组去计算

  • 八进制转二进制:八进制每一位都换成二进制的三位

  • 十六进制转二进制:同上,变成一位变四位

image-20211024222228022

第二章、程序控制结构


1、顺序控制

就是按照程序代码的顺序执行。

2、分支控制(if)

分为以下:

if单分支、if-else双分支、if-else if…-else多分支、嵌套分支。

题目:判断一个年份是否是闰年,闰年的条件是符合下面二者之一:

​ (1)年份能被 4 整除,但不能被 100 整除;

​ (2)能被 400 整除

public static void main(String[] args) {

int year = 2100;

System.out.println(isRunNian(year) ? year + “是闰年” : year + “不是闰年”);

}

public static boolean isRunNian(int year){

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){

return true;

}else{

return false;

}

}

题目:下面这个输出什么?

public static void main(String[] args) {

boolean b = true;

if (b == false){ //这里输出b,如果把 b==false 改成 b=false 输出c

System.out.println(“a”);

}else if (b){

System.out.println(“b”);

}else if (!b){

System.out.println(“c”);

}else{

System.out.println(“d”);

}

}

题目:参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组, 输入成绩和性别,进行判断和输出信息。

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println(“请输出选手的成绩”);

double score = scanner.nextDouble();

if (score >= 8.0) {

System.out.println(“请输出选手的性别”);

char gender = scanner.next().charAt(0);

if (gender == ‘男’){

System.out.println(“进入男子组”);

}else if (gender == ‘女’){

System.out.println(“进入女子组”);

}else {

System.out.println(“性别输入有误”);

}

}else{

System.out.println(“你好,成绩不合格,你被淘汰了”);

}

}

3、分支控制(switch)

语法:

image-20211024224530547

流程图如下:

image-20211024224636152

如果case语句种没有break,那么就继续执行下一个case中的语句,这个叫做穿透

switch(表达式),表达式的返回值必须是byte、short、int、char、enums,String类型。

switch和if语句的区别?

  • 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可以使用,建议使用 swtich 语句。

  • 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广。

4、循环控制(for)

语法:

image-20211024225057183

细节:

  • for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。

  • 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

5、循环控制(while)

语法:

image-20211024225300594

6、循环控制(dowhile)

语法:

循环变量初始化;

do{

循环体(语句);

循环变量迭代;

}while(循环条件);

先执行一次再判断,固定至少执行一次

上面这些循环可以嵌套执行。

7、跳转控制(break、continue)

  • continue语句用于结束本次循环,继续执行下一次循环

  • continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的使用的规则一样.

  • break 语句用于终止某个语句块的执行,一般使用在 switch 或者循环[for , while , do-while]中

第三章、数组


1、一维数组简介

数组是一种引用类型的数据结构,可以储存同一种类型的数据。

动态初始化数组:

//声明数组

int a[]; 或者 int[] a

//创建数组

a=new int[10];

静态初始化数组:

int[] a = {1,4,5,1,5,2,7};

细节

  • 数组元素可以是引用类型,也可以是基本类型

  • 创建的数组如果没赋值,是有默认值的

  • 可能会报数组下标越界异常

练习:

  1. 创建一个 char 类型的 26 个元素的数组,分别 放置’A’-‘Z’。使用 for 循环访问所有元素并打印出来。提示:char 类型数据运算 ‘A’+2 -> ‘C’

  2. 请求出一个数组 int[]的最大值 {4,-1,9, 10,23},并得到对应的下标。

2、数组赋值机制和数组拷贝

数组在默认情况下是引用传递,赋的值是地址。

值传递/值拷贝 和 引用传递/引用拷贝的区别可以使用代码测试一下。

测试一下怎么让数组进行值拷贝。

3、数组反转

两种方式:

  • 找规律反转

  • 使用逆序赋值的方式

4、数组添加/扩容

练习1:实现动态的给数组添加元素效果,实现对数组扩容。ArrayAdd.java

  • 原始数组使用静态分配 int[] arr = {1,2,3}

  • 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}

  • 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!

另外,给大家安排了一波学习面试资料:

image

image

以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!
着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-0YxKr9Zr-1711918098706)]
[外链图片转存中…(img-ySEsA255-1711918098706)]
[外链图片转存中…(img-Hl2aa5JC-1711918098707)]
[外链图片转存中…(img-5IKE2jGz-1711918098708)]
[外链图片转存中…(img-bteCDbP2-1711918098708)]
[外链图片转存中…(img-O27wce0D-1711918098709)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-8NaHleNL-1711918098709)]

最后

俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!

另外,给大家安排了一波学习面试资料:

[外链图片转存中…(img-EUz5lNJe-1711918098709)]

[外链图片转存中…(img-y0rFSPKQ-1711918098710)]

以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值