java基础
0.java是解释性语言,C++是编译性语言(java不能编译后直接运行,需要解释器解释)
1.java文件执行
(1)我们编写得到的.java
文件必须先经过javac编译为.class
文件之后,再跨平台的放到不同的操作系统中运行,如下图;
(2)可以直接cmd打开.java
所在文件夹,命令行直接编译(注:记得文件编码方式要与命令行编码方式一致,gbk)
(3)cmd命令行中直接输入java 文件名(切记不加后缀)
即可运行.class
文件;
(4)总结:.java
文件经过编译器javac(c代表compile)得到.class
文件,将文件编译为JVM(jdk中的java虚拟机)可以识别的字节码文件,再由运行工具java.exe装载到JVM执行;
(5)JDK与JRE与JVM之间的关系:
(6)环境变量的作用:
2.java语言细节
(1)java中:包-类-属性,方法;以及变量的命名规则:
参见:https://blog.csdn.net/weixin_41753664/article/details/101862854博主的写法,写的很好!!!
补:java文件编译时,会为每一个类都生成一个.class
文件,可以在cmd命令行指定运行一个类:
3.常用转义字符
特别注意\r
:回车会直接回到当前行行首,然后继续输出后面内容;
4.注释(comment)
(1)单行注释://
(2)多行注释:
注:多行注释不允许再嵌套多行注释
(3)文档注释:
格式为:
/**
*@
*@
*@
*/
5.java常用代码规范
6.DOS(disk Operate System)磁盘操作系统:了解即可
命令行的指令就是控制DOS的
7.变量
(1)java程序中+
的使用
(2)java数据类型
(3)整数
数的表示范围看不懂的宝儿go去学学计算机组成原理-数据表示那章
(4)浮点数
float=1.342f,float类型变量声明时后面一定要加f,double可加可不加!!!
通常情况下应该用double而不要用float,因为double更精确
浮点数陷阱:2.7不等于8.1/3
(5)字符类型char
字符类型要用单引号,双引号会被自动识别为字符串类型
(6)布尔类型boolean
java中的boolean类型变量的值只有True和False,不能像C语言等用0,1可以代替真假
(7)基本数据类型转换
(8)数据转换注意事项
程序员可以用(int啥的)对数据进行强转,但注意强转有可能导致精度丢失;
(9)String类型数据和基本类型数据之间的转换
练习:
int a=101;
double b=99.5;
String a_String=a+"";
String b_String=b+"";
String c_String="123.5";
double c=Double.parseDouble(c_String);
8.java api文档
在线网站:https://www.matools.com/api/java8可以查看汉化版的api说明文档,说明文档结构 如下,可以直接通过索引检索某个类,也可以先找到该类所在“包-类”的方法去找
9.java运算符
(1)java中取模(%)的本质是:
a%b=a-a/b*b
(2)自增自减运算符:
a=1
a=++a//前加是先执行++再赋值
System.out.println(a);//2
a=1
a=a++//后加是先赋值再执行++
System.out.println(a);//1
(3)逻辑运算符
逻辑与和短路与的区别:
(4)利用三元运算符求三个数中最大的数
int a=129;
int b=35;
int c=290;
int max1=a>b?a:b;
int max=max1>c?max1:c;
System.out.println(max);
(5)运算符优先级
优先级从上到下依次变小
10.java中标识符的命名规则
(1)标识符命名规范:规则和规范的区别在于规则不对直接编译出错,规范不对只会导致代码可读性弱;
5de9bc4a026aa.png)
保留字和关键字不要用在自己的变量命名上
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/caed9f6c7d3049c7af3
11.位运算
(1)位运算基础:原码,反码,补码
(2)七种基本位运算
12.流程语句
(1)do-while
注意:do-while循环一定会先do一次,再判断,若判断条件为True,会继续执行循环体!!!
int i=0;
do{
System.out.println("The dog is cute");
}while(i<=10);
13.程序:打印九九乘法表
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
//每行要输出九九乘法表的内容,也就是把*替换成算式
System.out.print(j+" * "+i+" = "+j*i+'\t');
//System.out.print("*");
}
System.out.print('\n');
}
14.程序:打印金字塔和菱形(主要看打印规律)
(1)打印金字塔
int i=1,j=1,k=1;
//输入金字塔层数
System.out.println("Please input the floors:");
Scanner myScanner=new Scanner(System.in);
int n=myScanner.nextInt();
//打印金字塔
for(i=1;i<=n;i++){
//打印空格
for(j=1;j<=n-i;j++){
System.out.print(' ');
}
//打印星号
for(k=1;k<=2*i-1;k++){
System.out.print('*');
}
System.out.print('\n');
}
(2)打印空心金字塔
//根据输入层数,打印空心金字塔
System.out.println("Please input the floors:");
Scanner myScanner=new Scanner(System.in);
int n=myScanner.nextInt();
String space=" ";
String star="*";
for(int i=0;i<n;i++){
//下面是每一行要打印的内容,即每一次for循环的循环体
//如果是第0行,则需要打印n-1个空格,再加一个星号
if(i==0){
System.out.print(space.repeat(n-1));
System.out.print(star);
System.out.print('\n');
continue;
}
//如果是第n-1行,则需要打印2n-1个星号
if(i==n-1){
System.out.print(star.repeat(2*n-1));
System.out.print('\n');
continue;
}
//其他行<1>打印n-1-i个空格<2>1个星号<3>2*i-1个空格<4>一个星号
for(int j=0;j<n-1-i;j++){
System.out.print(' ');
}
System.out.print('*');
for(int k=0;k<2*i-1;k++){
System.out.print(' ');
}
System.out.print('*');
//每行结束后要打印一个换行符
System.out.print('\n');
}
(3)打印空心菱形
//根据输入层数,打印空心菱形
System.out.println("Please input the floors:");
Scanner myScanner=new Scanner(System.in);
int n=myScanner.nextInt();
//为输出做准备
String space=" ";
String star="*";
for(int i=0;i<n;i++){
//打印每一行上的内容
//当行数为第一行和第n-1行时:<1>打印n/2个空格;<2>打印一个星号
if(i==0||i==n-1){
System.out.print(space.repeat(n/2));
System.out.print(star);
System.out.print('\n');
continue;
}
//其他行:<1>打印|n/2-i|个空格;<2>打印一个星号;
//<3>打印(n/2-i%(n/2))-1个空格;<4>打印一个星号;
System.out.print(space.repeat(Math.abs(n/2-i)));
System.out.print(star);
System.out.print(space.repeat(n-1-2*Math.abs(n/2-i)));
System.out.print(star);
System.out.print('\n');
}
15.数组
(1)数组的赋值是地址传递
(2)一维数组的动态初始化
(3)二维数组的动态初始化(4)二维数组的内存布局
(5)二维数组语法练习题
程序:数组冒泡排序
//冒泡排序:比较相邻两个元素并交换位置,每次可以确定最前面或最后面一个元素
int[] arr={18,2,95,7};
System.out.println("Before BubbleSort,the arr is:");
for(int k=0;k<arr.length;k++){
System.out.print(arr[k]);
System.out.print('\t');
}
System.out.print('\n');
int temp=0;
for(int i=0;i<arr.length;i++){//对4个位置分别进行冒泡
for(int j=0;j<arr.length-1-i;j++){//比较3次-2次-1次
if(arr[j]>arr[j+1]){
//大数往后冒
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("After BubbleSort,the arr is:");
for(int m=0;m<arr.length;m++){
System.out.print(arr[m]);
System.out.print('\t');
}
System.out.print('\n');