JavaSe阶段基础语法
java入门
java诞生过程:1972年诞生c语言,因为指针和内存管理复杂,难以移植性。1982年产生了改进后的c++但是还是很复杂,于是在1995年就建立了java语言。
java优点:
-
语法有点像c
-
没有指针
-
没有内存管理
-
运行在jvm上,实现了真正的一次编译到处运行
-
面向对象
-
类型安全
……
java三大版本:
- javase:标准版(桌面程序,控制台……)
- javame:嵌入式开发(手机,家电…… ) 已经淘汰
- javaee:企业级开发(web,服务端……)发展最好
jdk,jre,jvm的关系:
- jdk:java开发环境。包括jre和jvm
- jre:java运行环境。包含jvm。
- jvm:java运行虚拟机。模拟cpu运行java程序。
编译型和解释型:
都是翻译程序的意思,将一种语言翻译成另一种机器语言。
编译:编译成一个字节码文件,保存。
解释:执行一句翻译一句,不生成字节码文件。
java基础
1.注释,标识符,关键字
注释:注释不会被计算机执行,是给编程人员看的,为了方便阅读代码。
java中的三种注释:
单行注释://
多行注释:/* ……*/
文档注释:/**…… */
/** * @author panglili * @create 2022-07-13-8:36 */ public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); //单行注释 /* 多行注释 多行注释 多行注释 */ /** * 文档注释 * 文档注释 */ } }
标识符
java所有的组成部分都是有名字的。如类名,变量名,方法名等都被称为标识符。
关键字
系统定义的有特殊含义的标识符,不可再被用户定义为类名,变量名,方法名……
2.数据类型
java八大类型:
int:4字节
short:2字节
byte:1字节
long:8字节
以上为整数类型
float:4字节
double:8字节
以上为浮点类型
char:2字节
以上为字符类型
boolean:1
以上为布尔类型
/** * @author panglili * @create 2022-07-13-9:04 */ public class NumType { public static void main(String[] args) { int a=1; byte b=127; String c="123"; long d=1276543223999999999L;//long类型后面加L区别 char e='a'; float f=1.2F;//float类型后面加F double g=2.22; boolean fa=false; boolean tr=true; } }
扩展:进制
二进制:0b
十进制:正常
八进制:0
十六进制:0x
int i=0; //十进制 int i0=0b101; //二进制 int i1=077; //八进制 int i2=0xA1; //十六进制
浮点数使用小tips:
尽量不要用浮点数进行比较
3.类型转换
byte,short,char->int->long->float->double
由高字节到低字节转换需要强制类型转换:可能会产生内存溢出或者精度溢出
由低字节到高字节转换会自动类型转换
/** * @author panglili * @create 2022-07-13-10:02 */ public class TypeTransfer { public static void main(String[] args) { int i=128; byte b=(byte)i; System.out.println(i); //强制转换,int到byte System.out.println(b); //强制转换,内存溢出 float f=3.14f; System.out.println((int)f);//强制转换,精度丢失 int a=b; System.out.println(a);//自动转换,byte到int } }
4.变量,常量
变量:java中初始化后依旧可以变化的量。
常量:java中初始化后不可变化的量。使用final定义。
/** * @author panglili * @create 2022-07-13-10:15 */ public class VariableConstant { public static void main(String[] args) { //定义变量赋初值 int a=1; String name="tata"; System.out.println(a); System.out.println(name); //改变变量的值 a=2; name="panglili"; System.out.println(a); System.out.println(name); //常量 final int B=3; // b=4; 报错不可改变其值 System.out.println(b); } }
5.运算符
算术运算符:+,-,*,/,%,++,--……
赋值运算符:+=,=,-=……
关系运算符:>,<,>=……
逻辑运算符:&&,||,
位运算符:|,&,^,~,>>,<<
条件运算符: ?:
扩展赋值运算符:
6.包机制
相当于一个文件夹,方便分类管理。
在公司中一般就是公司域名倒置,用来建包。
阿里巴巴开发手册,都是java基础的规范约定,可以看看规范自己的编码!!!
java流程控制
1.用户交互scanner
扫描用户输入,进行操作。
package com.javase.grammer;
import java.util.Scanner;
/**
* @author panglili
* @create 2022-07-13-11:17
*/
public class ScannerUse {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入输入s:");
String s = scanner.next();
System.out.println("输入的结果如下:");
System.out.println(s);
scanner.close();
}
}
scanner进阶使用:判断输入的是否是整数,同理可判断其他数据类型。
package com.javase.grammer;
import java.util.Scanner;
/**
* @author panglili
* @create 2022-07-13-11:17
*/
public class ScannerUse {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
if(scanner.hasNextInt()){
System.out.println("输入了整数");
}else{
System.out.println("输入的不是整数");
}
}
}
输入n个整数以非整数结束,计算输入的整数和。
package com.javase.grammer;
import java.util.Scanner;
/**
* @author panglili
* @create 2022-07-13-11:40
*/
public class ScannerCalculate {
public static void main(String[] args) {
int sum=0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
while(scanner.hasNextInt()){
sum+=scanner.nextInt();
}
System.out.println(sum);
}
scanner.close();
}
2.顺序结构
最基本的结构,按照顺序一条一条的执行。
System.out.println("1");
System.out.println("2");
System.out.println("3");
System.out.println("4");
System.out.println("5");
会按照顺序一条一条输出1,2,3,4,5
3.选择结构
if单选择
if多选择
嵌套if
switch多选择
package com.javase.grammer;
import com.sun.org.apache.xml.internal.res.XMLErrorResources_tr;
/**
* @author panglili
* @create 2022-07-13-11:52
*/
public class Structure {
public static void main(String[] args) {
//if单选
int a=1;
int b=2;
if(a==1){
System.out.println("正确");
}else
System.out.println("错误");
//if多选
if(a>1){
System.out.println("大于");
}
if(a<1){
System.out.println("小于");
}
if(a==1){
System.out.println("等于");
}
//嵌套
if(a==1){
if(b>1){
System.out.println("b>a");
}
else
System.out.println("b<a");
}else
System.out.println("条件1不成立,未进入嵌套");
int a=3;
switch (a){
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
case 4:
System.out.println("4");
break;
default:
System.out.println("未匹配到");
}
}
}
4.循环结构
for:写结束条件
while:表达式为true就会一直循环。
do……while:先循环一次再判断。
package com.javase.grammer;
/**
* @author panglili
* @create 2022-07-13-12:10
*/
public class Circle {
public static void main(String[] args) {
//for 循环输出1到100
for(int i=1;i<=100;i++){
System.out.println(i);
}
//while循环输出1-100
int i=0;
while(i<100){
i++;
System.out.println(i);
}
}
}
九九乘法表打印
package com.javase.grammer;
/**
* @author panglili
* @create 2022-07-13-15:48
*/
public class MultiplicationTable {
public static void main(String[] args) {
for(int a=1;a<10;a++){ //a控制行数
for(int b=1;b<=a;b++){ //b控制列数,应该等于行数
System.out.print(a+"*"+b+"="+a*b);
System.out.print("\t");
}
System.out.println("");
}
}
}
java5新特性:for(变量:表达式),常用于遍历数组和集合。
package com.javase.grammer;
/**
* @author panglili
* @create 2022-07-13-15:58
*/
public class ForNum {
public static void main(String[] args) {
int [] nums={1,2,3,4,5,6};
for(int i:nums){
System.out.println(i);
}
}
}
5.break,continue的使用
break :会强制退出循环,不执行剩余的循环。
continue:跳过这次循环,剩余的循环继续执行。
package com.javase.grammer;
/**
* @author panglili
* @create 2022-07-13-16:03
*/
public class BreakContinue {
public static void main(String[] args) {
//使用了break,在打印到30的时候就会退出打印,控制台只打印了1-29
for(int i=0;i<100;i++){
if(i==30){
break;
}else
System.out.println(i);
}
System.out.println("***************");
//使用了continue,在打印到30的时候就会跳过,控制只是没有打印30
for(int j=0;j<100;j++){
if(j==30){
continue;
}else
System.out.println(j);
}
}
}