JAVA基本语法(一)

一.数据类型与运算符

1.数据类型的分类

·8大基本数据类型

数值型:·整形:byte(1) < short(2) < int(4) < long(8);

·浮点型 float(4)< double(8);

字符型:·char  

布尔型:·boolean(false/true)

2.变量:

命名规则:(1)只能包含数字、字母、下划线;

(2)数字不能开头;

(3)变量名区分大小写;

规范:推荐变量名为小驼峰,多个单词时,除去首单词外,其他单词首字母大写;

推荐类命名为大驼峰,多个单词首字母全大写;

推荐包命名为全小写,多个单词用下划线_分割;

3.常量:

声明后不可更改;

语法:final int a = 10;

字面型常量:直接写出来的值;

4.数据类型转换:

a.小转大:涉及到运算时自动提升

b.大转小:强制类型转换,存在丢失精度风险;

5.运算符:

算数运算符:+ - * / %

关系运算符:< > == >= <= !=;

逻辑运算符: &&  ||     !

                    位操作:&   |    ^    ~

移位运算: <<     >>   >>>(无符号右移);

条件运算符: 三木运算符   int c = a<b?a:b;

6.程序的逻辑结构:

顺序结构;

分支结构:

if结构:if()   

else if()

else

switch结构:

switch()  case a:break;

                  default:

循环结构:

while结构:

while(表达式){}

break与continue:

break:结束当前循环;

continue:跳过当前循环执行下一次循环;

for结构:用于循环次数已知

7.输入输出:

标准输入:System.out.print --------不带换行

                 System.out.println --------带换行

                   System.out.printf --------和c的printf一样

标准输入:原生的较难用,使用java.util.Scanner

Scanner   scanner  = new Scanner(System.in);

String   name  =  scanner.next();

int   age = scanner.nextInt();

从键盘读取多个内容:

while(scanner.hasNextDouble);

8.方法

JAVA方法笔记_@未来可期的博客-CSDN博客

定义:代码的复用性,表示一种行为或者能力

语法:public static 返回值 方法名称 (参数列表){具体代码 return;}

tips:break当有循环嵌套时,只能跳出本层循环,若跳出全部循环,可使用return;

方法的调用:通过主方法进行调用  数据类型 变量 = 方法名称,参数

若没有返回值,用void修饰

Java中没有函数声明的概念,一旦定义了必须实现,,与位置无关

参数传递:只有值传递,只是将数值拷贝一份给形参

方法的重载(overload):方法名称相同,根据参数列表的不同选择不同方法,例如println

方法重写(override):重写该方法,之前的无效。调用时使用自己写的方法

方法的递归:

使用场景:·大问题转换为多个子问题的求解

               ·拆分后的子问题和原问题除了数据规模不相同外,其他解决思路完全相同。

   ·存在递归出口条件

如何写出递归:关注方法的语义、关心如何利用方法解决我的问题、当前只能干什么,剩下交给子方法处理;

9.数组

 详细看另一篇博客:JAVA数组笔记_@未来可期的博客-CSDN博客

定义:存放相同数据类型的一组集合;

创建:静态初始化:int[] data = {1,2,4,5,6};

  动态初始化: int[] data = new int[]{1,2,4,5,6};

int[] data = new int[] -----------默认初始值都为0;

访问与长度:取得数组的长度,数组名.length

取得数组的元素arr[index] ->索引

练习题:

        1.将数组转换成为字符串:Arrays.toString(数组名);

  2.数组拷贝:Arrays.copyOf(原数组名,拷贝后的新数组长度);

深拷贝:创建新的对象,将原来的数组内容拷贝到新数组

浅拷贝:创建新的引用;

3找到无序的最大元素;

4.求整形数组的和;

5.查找数组中指定元素;

7.二分查找(数组必须有序);

8.数组排序:Arrays.sort(数组名) --------双轴快排;

9.数组逆序

10.数组数字组合排列

10.类和对象

编程思想:如何把现实生活的问题抽象成代码实现;

面向对象:JAVA语言一切皆为对象,所有行为与属性都被包装到一个个对象中;

:模板,规定了该类所具备的属性和行为

对象:类的一个实例;

类的定义:class类名{}

根据类产生对象:类名  对象名  = new 类名();

static关键词:与对象无关,直接通过类名称进行调用;

static属性:静态属性,在JVM区进行保存,该类所有对象共享该属性

static方法:静态方法;

static代码块:静态代码块;

static类:静态内部类;

11.面对对象编程三大特性:封装继承多态

封装性:private实现属性的封装,当一个属性被private修饰,只在类的内部可看见,出了该类无法使用;

public:公共的,共有的,无论如何都可以使用;

阿里编码规约:所有的成员变量都使用private进行修饰(99%);

若想取得或者修改private属性的变量,需要使用提供的getter/setter方法;

12.线性表

1.顺序表:将java中的数组包装成为类,使得基本数组有了扩容的功能

插入:1.判断合法性;2.边界的判断;3.向index位置插入元素

查找,修改,删除等操作;

动态数组的优点:根据index来修改/查找元素快 时间复杂度为O(1);

缺点:数组定长的问题,需要扩容,需要大量的元素搬移工作,耗时;

2.链表:

为了解决动态数组的缺点,引入链表

头插法:先创建一个节点,使之指向链表头部;

遍历单链表:只能从头部开始遍历;

在中间位置进行插入 ;

增删改查;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值