该篇主要是针对在Java基础的学习过程中容易忽略,或者容易出错的知识点进行了一个大致的汇总,同时也总结了一些安装时会出现的问题,比如在IDE环境中无法创建软件包,或者java类这种少见的问题,虽然内容简短,但是字字句句都非常地管用,例如标识符定义规则,常见命名约定,对于以后学习Java方法,类时便有一个好的区分,在数据类型大小比较及应用方面,为何有些数据可以自动转换而有些却不行?容易被忽略地三元运算符和switch的用法在代码的简洁度上起了很大的作用, 循环结构的区分和适用条件,数组等等.希望通过我这篇文章,大家都能收获满满,感谢大家的来访,如有不当之处,感谢你的留言与评论.
目录
赋值运算中 sum+=num 和 sum = sum + num 的区别
关系运算符返回的值都为boolean类型: true or false
java之父:詹姆斯.高斯林
安装IDEA后会遇到的某些奇葩问题
把IDEA弄成接地气的汉化:
首先 Ctrl+Alt+S会出现到插件界面,
然后按照以下步骤进行对应操作(英文和汉语一一对应即可),
最后会出现对话框,点击Restar。
在IDEA环境中无法创建软件包,或者java类
(关键在于点亮生成蓝色框)
操作:
改变
标识符定义规则
- 由数字,字母,下划线(_)和美元符($)组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
常见命名约定
小驼峰命名法 : 方法,变量
(1) 标识符是一个单词的时候,首字母小写 ---->name
(2) 标识符是由多个单词组成的时候,,第一个单词首字母小写,其它单词首字母大写(firstName)
大驼峰命名法 : 类
(1) 标识符是一个单词的时候,首字母大写 ---->Student
(2)标识符是由多个单词组成的时候,每个单词首字母大写 ---> GoodStudents
数据类型大小比较及应用方面
数据类型的区分
数据类型应用方面
java的数据类型:整数默认为int;浮点数默认为double。
如果 long l = 10000000000,输出会显示错误,这是由于该数据类型超出了实际为int类型的数据范围(long类型比int类型更高一级),需要在数值后面添加一个L,表明其为long类型,才可以正常输出,即 long = 10000000000L。
float同理可得.
//定义long类型的变量,数据后面要加上 L
long l = 100000000000L;
System.out.println(l);
//定义float类型的变量,数据后面要加上 F
float f = 13.14F;
System.out.println(f);
相同的赋值 但是对应的数据类型不一样,输出的值就不一样,请看下面的代码块.
int a = 10;
System.out.println(a); // 10
double b = 10;
System.out.println(b); // 10.0
数据中的自动类型转换和强制类型转换的区别
首先需要了解一个知识点 数据类型的等级按照下面的顺序依次递增:
(byte,short,char < int <long < float < double)
自动转换:低等级向高等级转换
强制转换:高等级向低等级转换
//自动转换 -> byte,short,char < int <long < float < double
int b = 'a';
System.out.println(b);
// 输出:97:把char类型转换成int类型,输出其对应的(ASCII码数值)
// notice: char 转换成的数值,都是对应符号底层的ASCII码数值。
//强制转换
double c = 88.88;
int d = (int)c;
System.out.println(d);
// 输出:88 ,强制转换 可能会使数值损失精度
常见的底层符号对应的ASCII码数值
"A" --> 65 A - Z 连续
"a" -->97 a - z 连续
'"0" -->48 0-9 连续
算术运算的注意事项
/ 和%的区别:两个数据做除法,/ 取结果的商,%取结果的余数。
注意:整数操作的结果只能得到整数,如果想得到小数,必须有浮点数参与运算。
// 区分 / 和 %
int num = 13;
int a = num / 6; // 2
double b = num / 6.0; // 2.1666666666666665 接近数学里面的除法
int c = num % 6; // 1
System.out.println(a +" "+b+" "+c);
赋值运算中 sum+=num 和 sum = sum + num 的区别
sum += num 中隐含了一个强制类型转换的过程
// 赋值运算的注意事项
short s = 10;
// s +=10; pass
// s += 10 是等价于 s = (s的数据类型)(s + 10),而不是等价于 s = s + 1,
// s = s + 10 这个操作就不行 电脑翻译成 short != short + int
s = (short)(s + 10) ; // pass
System.out.println(s);
自增自减运算符注意事项
++i : 先自身改变,再把改变后的自身赋值给变量。
i++ : 先自身不变直接赋值给变量,然后自身再改变。
int i = 10;
int j = 10;
int s = ++i;
System.out.println(s +" "+i); // 输出 11 11
int u = j++;
System.out.println(u +" "+j); // 输出 10 11
关系运算符返回的值都为boolean类型: true or false
int i = 10;
int j = 12;
System.out.println(i<j); // 输出 true
逻辑运算符 注意 ^ 异或运算符的结果:相同为false,相异为true
短路逻辑运算符 (||,&&)与逻辑运算符的区别
逻辑与 & ,无论左边真假,右边都要执行。
短路与 &&,如果左边为真,右边执行; 如果左边为假,右边不执行。
逻辑或 | ,无论左边真假,右边都要执行。
短路或 || ,如果左边为假,右边执行;如果左边为真,右边不执行。
容易忽略的三元运算符
格式 : 关系表达式?表达式1:表达式2;
范例: a > b ? a : b;
解读: 计算机首先判断 关系表达式(a>b) 如果值为true,则返回 a ,如果值为 false,则返回b.
int a = 100;
int b = 80;
boolean c= a-b>0 ? true : false;
System.out.println(c); // 输出true
if语句的两种用法
// 只有两个条件的时候 可以用此方法 (if .... else)
int a = 100;
int b = 20;
if (a > b)System.out.println("a大于b");
else System.out.println("b大于a");
// 三个及以上条件 可以用此方法(if ...else if ... else)
int d = 100;
int e = 20;
if (d > e)System.out.println("d大于e");
else if (d==e) System.out.println("d等于e");
else System.out.println("d大于e");
switch的用法
通常适用于在多项条件里面进行选择得到最佳结果.
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
// 新升级的switch
// 原版,要额外注意在每个语句后面添加 break;
switch (a) {
case(1): System.out.println("run");break;
case(2): System.out.println("Swimming");break;
case(3): System.out.println("walk");break;
default: System.out.println("play");break;
}
// 升级
switch (a) {
case 1 -> System.out.println("run");
case 2 -> System.out.println("Swimming");
case 3 -> System.out.println("walk");
default -> System.out.println("play");
}
if-else语句和switch的区别应用
当表达式是数值,,可以选择 switch。
当表达式是一直运算的时候,即是式子时,用 if -else
循环结构
循环结构有三种:
第一种:for循环
for(循环体语句 ;条件判断语句;条件控制语句){
}
public class One {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
}
}
#输出
0
1
2
3
4
第二种:while循环
while(条件判断语句){
循环体语句;
条件控制语句; }
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入a的值");
int a = sc.nextInt();
while (a < 10){
System.out.println("输出"+a);
a++;
}
}
}
#输出
请输入a的值
5
输出5
输出6
输出7
输出8
输出9
第三种:do while 循环
do{
循环体语句;
条件控制语句;
}while(条件判断语句)
目前经常应用的为前两种。
前两种的不同使用方式:for循环适合于 有限次的循环,while适用于不明确的循环次数,所以对于循环使用要合理判断.
无限循环
# for的无限循环
for(;;){
System.out.println("我见乌托邦多妩媚");
}
# while的无限循环
while (true){
System.out.println("我见乌托邦多妩媚");
}
数组
格式有两种
int [] arr = new int[]{1,2,3};
int [] arr1 = {1,2,3};
//注意,单纯的输出 arr/arr1将会得到,而不是数组这个大盒子里面的元素.
给数组赋值以后原数组值会变化
public class One {
public static void main(String[] args) {
int [] arr1 = {1,2,3};
for (int j = 0; j < 3; j++) {
System.out.print(arr1[j]);
}
System.out.println();
//换行,区分print 和println,print不换行,println要换行
arr1[0] = 5;
for (int i = 0; i < 3; i++) {
System.out.print(arr1[i]);
}
}
}
#输出
123
523
对于数组的索引也经常出现越界问题:
注意: 最小索引为0,最大索引为数组的长度减去1.
public class One {
public static void main(String[] args) {
int [] arr1 = {1,2,3};
for (int j = 0; j < arr1.length; j++) {
System.out.print(arr1[j]);
}
System.out.println();
for (int i = 0; i <= arr1.length-1; i++) {
System.out.print(arr1[i]);
}
}
}
#输出
123
123
Random的基本用法
通用格式为:
第一步导包:import java.util.Random; 第二步:引入Random sc = new Random(); 第三步:确定值的数据类型和范围:num = sc.next数据类型(数据的范围0~多少)+(如果范围不够就在外面加上数字)
利用Random随机生成10个1到10 的数字存到数组里面.
arr[i] = sc.nextInt(10)+1; ps:由于sc.nextInt(10)的范围为0~9,而我们需要1~10的取值范围,因此需要在后面+1.
import java.util.Random;
public class One {
public static void main(String[] args) {
int [] arr = new int[10];
Random sc = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt(10)+1;
}
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j]+" ");
}
}
}
#输出
9 9 3 10 6 7 1 7 9 4