0


gtb-2 java基础(前端选手视角)

安装java并配置环境变量

下载地址:Java Archive | Oracle

  1. 系统变量-新建名为JAVA_HOME的环境变量,指向java安装目录
  2. 系统变量-PATH,编辑新建%JAVA_HOME%\bin

tips : 注意点确定

目的: 使得我们在任何目录位置都可以执行 java 命令

卸载java

  1. 应用程序中卸载
  2. 删除安装目录
  3. 删除系统环境变量,及环境变量指向的安装目录
  4. win+_r 输入 regedit 找到HKEY_LOCAL_MACHINE -> SOFTWARE -> JavaSoft 点击删除

前置知识

  1. java版本区别:从内容上看 EE > SE > ME ( Enterprise > Standard > Micro)
  2. 名词解释- JRE : Java Runtime Environment- JDK : Java Development Kit ( JRE + tools such as compiler , debugger)
  3. java包命名规范
  • 在不同的包名区分下,包里面可以有名称不同的类
  • 包命名约定:- 小写形式- 公司使用反向域名 如yikina w.com的包名为com.w yikina- 如果存在特殊字符- _ 关键字 数字等情况,为包名添加下划线_- java本身的包以java.javax开头

java基础

基本结构

java是面向对象的编程语言,以一个class作为主程序体,基本形式如下:

java

代码解读

复制代码

/** * class描述注释 */ public class Hello {    public static void main(String[] args) {        System.out.printIn("Helllo,world!");        //这里是注释   } } 
  1. class名称大写 ,方法名称小写 eg: Hello main
  2. 有修饰符 public``static ,有返回值类型 void ,有方法输入的参数类型String[] args
  3. main方法写法固定 public static void main(String[] args){...}tips:idea中可以使用ctrl+alt+l快速格式化代码

变量和数据类型

java变量和数据类型分为:基本类型、引用类型

变量

整理了这份面试笔记包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题

需要全套面试笔记【点击此处】****即可免费获取

基本变量

声明时使用类型修饰符,如

int

ini

代码解读

复制代码

int a;  //不写声明值,指定默认值为0 int x = 100; x = 200; //可以被反复赋值 int n = x; //可以声明变量为另一个变量 n = n + 100; //可以被自己反复赋值 

原理: 和js基本数据类型差不多,在内存中有固定地址存储数据,绝对引用

数据类型
基本类型
  • 整数类型:byte \ short \ int \ long
  • 浮点数类型: float \ double
  • 布尔类型: boolean
  • 字符类型: char

区别:所占内存数量不同( 前置知识 :byte(字节)=8 bit(8位二进制数),1024byte = 1k ,1024 k =1M ,1024M = 1G , 1024G=1T)

具体而言:

整型
  • byte:-128 ~ 127
  • short: -32768 ~ 32767
  • int: -2147483648 ~ 2147483647
  • long: -9223372036854775808 ~ 9223372036854775807

tips:

long类型定义的变量结尾要加L ,否则为int

long n=80000L

小数值可赋值给大数值,反之不可

浮点型
  • float: 3.4x10(38)
  • double: 1.79x10(308)

tips: float类型要加上

f

后缀 ,如

float n=3.14f
布尔型
  • boolean : true || false (4 byte)
字符型
  • char : 一个字符' ' (ASCII \ Unicode)也可以使用\u+Unicode编码来表示:\u0041

tips: 一个字符,‘ ’ 单引号,区分" "双引号字符串

引用类型
  • String : 字符串 “ ”

原理 :类似js中的引用类型,内部存储指针,指向真正存在的位置,相对引用

详见下面字符串

作用域

和 js 一样的部分:{ } 为一个作用域

区分js : 没有闭包,尽可能将变量定义在小作用域,且不要重复使用变量名

demo.js

javascript

代码解读

复制代码

{    let a=5;   {        let a =3;        console.log(a);  //a=3   }    console.log(a); //a=5 } 

demo.java

java

代码解读

复制代码

{    int x=5;   {        int x=3 //编译时异常,上一个x作用域还没有结束   } } ​ {   {        int x=5;   }    int x=3; //可以这样定义,因为上一个x作用域结束了,虽然这么是可以的但是最好好像不要用重复的变量名声明 } 
常量

初始化后不可再次赋值(只读的),使用

final

修饰符,全部使用大写

java

代码解读

复制代码

final double PI=3.14 

用法:类似于shell中的declare -r ,用于替换经常使用的数据or地址or名称

var关键字

类名太长的简略写法:

java

代码解读

复制代码

//普通 LongExample le = new LongExample(); //使用var var lg - new LongExample; 

运算

按照四则运算规律,可以使用小括号。

和js一样可以使用

+=``-=``++``--

tips:++n (先+1再引用n) n++ (先引用n再+1)

整数运算
  • 整数运算的结果永远是整数
  • 溢出:整数运算结果超出范围限制而产生的奇怪结果。解决:换更大范围的整数类型
  • 移位运算 ( int,如使用byte\short会先转化为int )- 原理:将数据换算为二进制左移或右移java代码解读复制代码int n=7; //00000111=7 int a=n<<1 //00001110=14 int b=n>>1 //00000011=3
  • 位运算- & | (与js中一样,&两个同时为真才为真,| 任意一个为真就为真)- ~ (0和1互换)java代码解读复制代码int n= ~0 //1 int n= ~1 //0 - ^ (比较两个数,相同为1,不同为0)java代码解读复制代码n = 12 ^ 12 //1 n = 21 ^ 56 //0
  • 类型自动提升、强制转型- 结果前面加()强制转型,但超出范围的结果可能是错误的java代码解读复制代码int a=5; short b=(short)a; - 参与运算的数类型不同,结果为较大范围的eg: int + long =long
浮点数运算

与整数相比,不能进行位运算移位运算

  • 浮点数计算会产生误差(原因:有些浮点数[0.1]十进制转换为二进制是无限循环小数 )
  • 比较浮点数是否相等——两数绝对值<很小的数java代码解读复制代码double r=Math.abs(x-y); if(r<0.0001){ //基本可以认为是相等的}
  • 溢出:除数为0时会返回 NaN Infinity``-Infinity
  • 类型提升 、强制转化:- 浮点数+整型 =浮点数- 强制转化浮点数->整数时,小数部分会直接被丢掉,超过范围会返回最大值
布尔运算

和js一致可以使用

>``>=``==``!=``&&``||``!
  • 短路运算 ( && || ) : 和js一致,&&(前面为真才执行后面),||(前面有一个为真就执行那个)
  • 三元表达式:和js一致,但后面两个比较的类型要一致

字符串string

区分char,string使用“ ”,里面包含多个字符

  • 转义:在引号中使用 \java代码解读复制代码String s ="qaz\"qwe" tips: \表示一个``符 , \n换行符
  • 字符串连接 :和 js 一样,使用+连接,如其他类型会自动转换为字符串
  • 多行字符串,使用三个引号表示 """ 这里写多行数据不用加换行符 """,会默认换行且以行首最短的空格为准
  • 不可变特性(引用类型)- 字符串本身是不变的,变的只是变量指向它的指针java代码解读复制代码public class Main { public static void main(String[] args) { String s = "hello";//内存开辟一个空间存储hello String t = s; s = "world"; System.out.println(s); //world,但这并不代表hello改变了,只是没有变量能指向它了,它仍然在内存中 System.out.println(t); // hello,设定变量时t指向s->hello } }
  • null表示该变量不指向任何对象,区分" "空字符串(指向一个字符串对象,内容为空)

数组

与js不同,

  1. java创建数组时就要确定数组容纳的数据类型及长度,且创建后不得改变
  2. 数组所有元素初始化都为默认值 (0/0.0/false)-》js es6 undefined

定义数组的方式:

java

代码解读

复制代码

int[] stu = new int[5]; //stu是int数据类型长度为5的数组 int[] stu = new int[] {34,66,78,99,54}; //不用写出数组长度 int[] stu={34,66,78,99,54} //最佳简化写法 System.out.println(stu.length); //5,获取数组长度用length,c#中是Length 
  • 引用类型特性(指针引用,和字符串那里一样去理解就行)记住基本数据类型存储的值,引用类型存储的是指针

java

代码解读

复制代码

public class Main { public static void main(String[] args) { String[] names = {"ABC", "XYZ", "zoo"}; String s = names[1]; names[1] = "cat"; System.out.println(s); // "XYZ" } } 

流程控制

输入与输出

输出

java

代码解读

复制代码

//输出后不换行 System.out.print("huhuh") //输出后换行->print line System.out.printIn("jlkjlk") 
  • 格式化输出 System.out.printf (print formatter)

java

代码解读

复制代码

double d = 3.1415926 System.out.printf("%.2f\n",d)//显示两位小数 

常见占位符:

%d

格式化输出整数、

%f

格式化输出浮点数、

%s

格式化输出字符串

输入

引入Scanner对象,有点类似c#

java

代码解读

复制代码

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Input your last grade:"); int lastG = sc.nextLine(); }} 

其他语句

  • if else : 基本用法一致- ==判断引用类型也会和js一样根据是否指向同一个对象判断,如需判断引用类型变量的内容是否相等,使用equals s1.equals(s2)
  • switch : 经典写法注意case,break,default- java12后写法(不需要break,可以直接赋值)java代码解读复制代码swith(color){ case "red" -> System.out.println("select red"); case "yellow" -> System.out.println("select yellow"); default -> { System.out.println("no choice"); System.out.println("have a good luck"); } } //用switch给变量赋值 int num=swith(color){ case "red" -> 1; case "yellow" -> 2; default -> { int a=0; yield a; //{}中使用yield作为返回值 }; } }
  • while (先判断条件,在执行循环) do...while(先执行一次循环,再判断条件)
  • for循环:1和js一致(把let改为数据类型int就可以了...)- java中的foreach循环 for( int n : array)->可以用于所有可迭代的数据类型

java

代码解读

复制代码

int[] ns={1,2,3,4,5} for (int n :ns){ System.out.println(n); } 

kotlin

代码解读

复制代码

- break :跳出当前这一层循环 contiune: 提前结束这一次的循环,下一次循环继续进行 

数组

遍历数组
  • for循环遍历 for(int i=0;i<nums.length;i++)
  • foreach遍历 for(int n : nums)
  • Arrays.toString(arrayname) :字符串形式打印java代码解读复制代码int[] nums={1,2,3,4} System.out.println(Arrays.toString(nums)) // [1,2,3,4]
数组排序
  • Arrays.sort(arrayname)(注意排序后的数组是否改变要看其是基本类型还是引用类型)
二维数组

java

代码解读

复制代码

int[][] nums={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} } 
  • 打印二维数组- 二层循环java代码解读复制代码for(int[] n:scores){ for(int s:n){ ... } } - Arrays.deepToString()

命令行参数

需求:命令行输入参数-version,程序输出对应结果

实现:通过main方法接受命令行参数args

java

代码解读

复制代码

public class Main{ public static void main(String[] args){ for(String arg:args){ if("-version".equals(args)){ System.out.println("v 1.0"); break;} } } }

本文转载自: https://blog.csdn.net/2301_78976656/article/details/140416299
版权归原作者 知识分享官 所有, 如有侵权,请联系我们删除。

“gtb-2 java基础(前端选手视角)”的评论:

还没有评论