Java基础知识(部分、随手记)

目录

基础知识:

基本框架:

注释:

关键字:

字面量:(数据类型)

变量:

注意事项:

计算机的存储规则:

基础语法:

标识符:

键盘录入:

IDEA项目结构的介绍

算数运算符:

判断和循环

顺序结构

分支结构

if语句

switch语句格式

while循环

循环结构

数组

数组的静态初始化

数组的地址值和元素访问

数组元素访问

数组的动态初始化

二维数组

二维数组的动态初始化

Arrays 类

方法

方法的定义

带返回值方法的调用

注意事项:

方法的重载:

面向对象

类和对象

如何定义类

如何得到类

如何使用对象

面向对象的进阶

封装

Java内存分配介绍

从内存的角度去解释

this的内存原理

成员变量和局部变量的区别

函数的调用;

random

字符串

创建String对象的两种方式

字符串的比较

好玩

使用 SimpleDateFormat 格式化日期


基础知识:

基本框架:

 public class ywj1 {
     public static void main(String[] args){  //快捷 psvm 回车
         System.out.println("Hello world");   //快捷键 sout 打印 换行
         System.out.print("Hello world");   //打印 不换行
     }
 }
 //格式化代码 CTRL+Alt+l
 ​
 // arr.fori  循环数组快捷键
 //CTRL + Alt + M 自动抽取方法
 //shift + F6  变量的批量修改

注释:

 
// 单行注释
 /*  多行注释 */
 /** 注释信息  **/

关键字:

  • 被Java赋予特定含义的英文单词

  • 关键字的字母全部为小写

  • 常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观

 class //用于(创建/定义)一个类,类是Java最基本的组成单元
       //class + 类名

字面量:(数据类型)

  • 告诉程序员:数据在程序中的书写格式

    System.out.println(123)     //输出整数  
     System.out.println('a')     //输出字符
     System.out.println("abc")   //输出字符串
     /*拓展:
       \t 制表符 在打印的时候,把前面的字符串的长度补齐到8,或者8的倍数。最少补1个空格,最多补8个空格
       布尔 boolean
       */

    变量:

     // 数据类型 变量名 = 数据值;
     int a = 10;
     double b = 10.00;
     String name  //字符串
     Boolean 

注意事项:

  • 只能存一个值

  • 变量名不允许重复定义

  • 一条语句可以定义多个变量

  • 变量在使用之前一定要进行赋值

  • 变量的作用范围

计算机的存储规则:

在计算机中,任意数据都是以二进制的形式来存储的

 /* 
 二进制 0b 开头
 十进制  不用加任何前缀
 八进制 以 0 开头
 十六进制 以 0x 开头 由0-9 a-f组成
 */

基础语法:

标识符:

  • 由数字、字母、下划线和美元符($)组成

  • 不能以数字开头

  • 不能是关键字

  • 区分大小写

  •  /*- 小驼峰命名法:方法、变量   例如:  name  firstName
     - 大驼峰命名法:类名  Student  GoodStudent */

键盘录入:

 //导包 导包的动作必须出现在类定义的上边
 import java.util.Scanner; 
 //创建对象 表示我要开始用Scanner这个类了
 Scanner sc = new Scanner(System.in);  //sc是变量名 可以变 其他都不允许改变
 //接收数据 真正开始干活了
 int i = sc.nextInt();   //这个格式里,只有i是变量名,可以变,其他都不允许改变
 ​

IDEA项目结构的介绍

project (项目)

module(模块)

package(包)

class(类)

算数运算符:

  • 数字进行运算时,数据类型不一样不能不能运算,需要转成一样的,才能运算

  • 隐式转换

    • 需要注意的一点是:如果把一个取值范围打的数值,赋值给取值范围小的变量。是不允许赋值的。如果一定要这么做就需要加入强制转换。

      (格式:目标数据类型 变量名 = (目标数据类型)被强制转的数据;)

 "+"  //字符串出现时为连接符  从左到右逐个执行
 ++   //作用 加 ;变量的值加1
 --   //变量的值减1
    

判断和循环

顺序结构

分支结构

if语句

 /*
 if(关系表达式){
     语句体;
 } else if(关系表达式){
 ​
 }
   ...
 else{
     语句体;
 }
 */

switch语句格式

 
switch(表达式){
     case 值1:
           语句体1;
            break;
     case 值1:
           语句体1;
            break;
      ....
      
     default:
         语句体N+1;
         break;
         
 }
 /*
 1、default 不一定要写在最下面 但是习惯性写在下面
 2、case 穿透 所以要记得写 break

while循环

 
/*
 初始化语句;
 while(条件判断语句){
     循环体语句;
     条件控制语句;
 }
 */

循环结构

 for( ){
     
 } 
 ​
 while(){
     
 }
 ​
 do{
     
 }while(true)

数组

 //格式一:数据类型 [] 数组名
 int [] array
     
 //格式二:数据类型 数组名 [] 
    int array []
  
     
 char [] arr = new char[100];  //定义一个数组长度为100的数组  

数组的静态初始化

初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程 完整格式 :数据类型[ ] 数组名 = new 数据类型[ ] { 元素1,元素2,元素3...}

简化格式:数据类型[ ] 数组名 = { 元素1,元素2,元素3...};

 
int[] array = new int[]{1,2,3};
 //简化格式
 int[] array ={1,2,3};
 doble[] array1 = new double[]{1,2,3};

数组的地址值和元素访问

 int [] arr = {1,2,3,4,5};
 System.out.println(arr);    //此时输出的是数组的地址值

数组元素访问

 
int [] arr = {1,2,3,4,5};
 int n = arr[0];  //获取数组中的数据
 System.out.println(n);
 arr[1] = 100;   //把数据存到数组当中
 //遍历打印
 for(int i=0;i<arr.length;i++){
     System.out.println(arr[i]);
 }
 /*
 在Java中,关于数组长度的一个属性,length
 调用方式:数组名.length
 System.out.println(arr.length);
 ​
 拓展:
 自动的快速生成数组的遍历方式:
 idea提供的
 数组名.fori
 */

数组的动态初始化

  • 动态初始化:初始化是只指定数组长度,由系统数组分配初始值

  • 格式:数据类型[ ] 数组名 = new 数据类型[数组长度]

二维数组

 /*
 格式;数据类型[][] 数组名 = {
   
   {元素1,元素2},{元素1,元素2}};
 eg: int[][] arr = {
   
   {11,22},{33,44}};
 int arr[][] = {
   
   {11,22},{33,44}};

二维数组的动态初始化

 
type[][] typeName = new type[typeLength1][typeLength2];
 ​
 int[][] a = new int[2][3];
 ​

Arrays 类

  • 给数组赋值:通过 fill 方法。

  • 对数组排序:通过sort 方法,按升序。

  • 比较数组:通过== equals ==方法比较数组中元素值是否相等。

  • 查找数组元素:通过binarySearch 方法能对排序好的数组进行二分查找法操作。

方法

  • 方法(method)是程序中最小的执行单元(实际上就是自己写的函数)

  • 什么时候会用到方法?

    • 就是把重复的代码,具有独立功能的代码可以抽取到方法中。

  • 实际开发中,方法有什么好处?

    • 提高代码的重复用性

    • 提高代码的可维护性

方法的定义

 /*
 格式
 public static void 方法名(){  //void视情况而定
     方法体(就是打包起来的代码);
     //return 返回值;
 }
 ​
 调用:(必须先定义后调用,否则程序会报错)
 方法名();
 */

带返回值方法的调用

 /*
 直接调用:
 方法名(实参);
 ​
 赋值调用:
 整数类型 变量名 = 方法名(实参);
 ​
 ​
 输出调用:
 System.out.println(方法名(实参));
 ​
 */

注意事项:

  • 方法不调用就不执行

  • 方法与方法之间是平级关系,不能互相嵌套

  • 方法的编写顺序和执行顺序无关

  • 方法的返回值类型为void,表示方法没有返回值,没有返回值可以省略return语句不写。如果要写return,后面不能跟具体的数据。

  • return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。

return关键字

  • 方法没有返回值:可以省略不写。如果书写,表示方法结束

  • 方法有返回值:必须要写。表示结束方法和返回结果。

方法的重载:

  • 同一个类中,方法名不同,参数不同的方法。与返回值无关。

    • 参数不同:个数不同、类型不同、顺序不同。

  • 好处;

    • 定义方法的时候不需要那么多单词

    • 调用方法的时候也不需要那么麻烦了

面向对象

  • 找东西解决问题就叫面向对象

类和对象

  • 类(设计图):是对象共同特征的描述

  • 对象:是真实存在的具体实例

如何定义类

 public class 类名{
     1、成员变量(代表属性,般是名词)
     2、成员方法(代表行为,一般是动词)
     3、构造器
     4、代码块
     5、内部类
 }

如何得到类

  • 类名 对象名 = new 类名();

如何使用对象

  • 访问属性:对象名.成员变量名

  • 访问行为:对象名.方法名(...)

补充:

  • 用来描述一类事物的类,专业叫做:Javabean类

    在Javabean类中,是不写main方法的。

  • 在以前,编写main方法的类,叫做测试类

    我们可以在测试类中创建Javabean类的对象并进行赋值调用。

  • 类名首字母建议大写,需要见名知意,驼峰模式;

  • 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。

  • 实际开发中建议还是一个文件定义一个class类

  • 成员变量的完整定义格式是:修饰符 数据类型变量名称 = 初始化值;一般无需指定初始化值,存在默认值。

面向对象的进阶

封装

  • 告诉我们,如何正确设计对象的属性和方法

  • 对象代表什么,就得封装对应的数据,并提供数据对应的行为

  • 好处?

    • 让编程变得简单,有什么事情,找对象,调方法就行。

    • 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行。

private关键字

  • 是一个权限修饰符,为了保证数据的安全性

  • 可以修饰成员(成员变量和成员方法)

  • 被private修饰的成员只能在本类中才能访问

  • 针对于每一个私有化的成员变量,都要提到get和set方法

    • set方法:给成员变量赋值

    • get方法:对外提供成员变量的值

 
//作用:给成员变量name进行赋值
 public void setName(String n){
     return name;
 }
 ​
 //作用;对外界提供name属性的
 public String getName(){
     return name;
 }

this关键字

  • 可以区分成员变量和局部变量

就近原则

 
System.out.println(age)  //就近原则
 System.out.println(this.age)  //不会到局部位置去找 只会调用成员位置的 

构造方法

  • 构造方法也叫构造器、构造函数

  • 作用:在创建对象的时候,由虚拟机自动调用,给成员变量进行赋值(初始化)的

格式:

 
/*
 piblic class Student{
     修饰名 类名(参数){
         方法体;
     }
 }
 */
  • 特点:

    • 方法名与类名相同,大小写也要相同

    • 没有返回值类型,连void都没有

    • 没有具体的返回值(不能由return带回结果数据)

    注意事项

  • 构造方法的定义

    • 如果没有定义构造方法,系统将给出一个默认和无参数构造方法

    • 如果定义了构造方法,系统将不再提供默认的构造方法

  • 构造方法的重载

    • 带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载

  • 推荐的使用方式

    • 无论是否使用,都都手动书写无参数构造方法,和带全部参数的构造方法

标准Javabean

  • 类名要见名知意

  • 成员变量使用private修饰

  • 提供至少两个构造方法

    • 无参构造方法

    • 带全部参数的构造方法

  • 成员方法

    • 提供每一个成员变量对应的setXxx()/getXxx()

    • 如果还有其他行为,也需要协商

快捷键

  • 可以快速插入私有化的全名变量

 // alt  +insert  
 //或者 alt + Fn + insert
  • 插件:1秒生成标准Javabean

  •  文件—>设置—>插件—>在Maketplace中搜索 ptg —>安装

Java内存分配介绍

  • 栈内存

    • 方法运行时所进入的内存,变量也是在这里

  • 堆内存

    • new出来的东西在这块内存中开辟空间并产生地址

  • 方法区

    • 字节码文件加载时进入的内存

  • 本地方法栈

  • 寄存器

从内存的角度去解释

  • 基本数据类型

    • 数据值时存储在自己的空间中

    • 特点:赋值给其他变量,也是赋的真实的值

  • 引用数据类型

    • 数据值是存储在其他空间中,自己空间中存储的是地址值

    • 特点:赋值给其他变量,赋的地址值

this的内存原理

  • this的作用:区分局部变量和成员变量

  • this的本质:所在方法调用者的地址值

成员变量和局部变量的区别

  • 成员变量:类中方法外的变量

  • 局部变量:方法中的变量

函数的调用;

  • 主要是自己遇到的和使用过的

random

  • Random r = new Random(); //随机生成一个整数数 赋值给 r

 import java.util.Random;
 ​
 public class dd {
     public static void main(String[] args) {
         int n = 10;
         while(n!=0){
             //随机生成一个整数
             Random r = new Random();
             //定义生成的整数的范围是1~20;
             int rr = r.nextInt(20) + 1;
             System.out.println(rr);
             n = n -1;
         }
 ​
     }
 }
 ​
 /*
 random.nextInt(int n)
 随机生成一个int值,该值介于[0,n)之间,也就是0-n之间的随机数,包括0不包括n
 随机生成0-9的数:random.nextInt(10)
 随机生成1-10的数:random.nextInt(10)+1
 */

随机点名

 
import java.util.Random;
 ​
 public class ee {
     public static void main(String[] args) {
         Random random = new Random();
         String[] names = {"刘备","曹操","关羽","张飞","赵云","孙权"};
         //通过随机生成的数来定义下标,从而为随机选取
         int index = random.nextInt(names.length);
         System.out.println("随机抽取到的名字为:" + names[index]);
     }
 }

随机输出10个1~100之间的数

     random.ints(0,100).limit(10).sorted().forEach(System.out::println);

字符串

  • API:应用程序编程接口

  • String的注意点:

    • 字符串内容是不会发生改变的,它的对象在创建之后不能被更改

创建String对象的两种方式

 /*
 直接赋值:
 String name = "张三";
 ​
 new:
 //空参构造
 String s = new String();

字符串的比较

  • 基本数据类型:比的书数据值

  • 引用数据类型:比的是地址值

 
boolean res = s1.equals(s2); //判断s1和s2是否相等
 ​
 boolean res = s1.equalsIgnoreCase(s2);//比较字符串对象中的内容是否相等 忽略大小写

好玩

  • 使用 SimpleDateFormat 格式化日期

 
package test;
 ​
 import java.text.SimpleDateFormat;
 import java.util.Date;
 ​
 public class Test {
     public static void main(String[] args) {
         Date Now = new Date();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM- hh:mm:ss");
         System.out.println("当前时间为:" + simpleDateFormat.format(Now));
     }
 }
 ​

猜你喜欢

转载自blog.csdn.net/weixin_63292027/article/details/127894336