Java学习

目录

一、变量

二、运算 

三、判断和循环语句 

四、数组

五、方法

六、类

七、字符串

八、static 

九、继承

十、多态 

十一、包

 十二、final

十三、抽象类

十四、接口

十五、嵌套类


一、变量

        1、byte范围【-128,127】

        2、long变量后面要写l,float变量定义要加f。如float app=1.2f;

        3、true和false都是小写

        4、java区分双引号和单引号,单引号只存一个字,双引号可以存若干

        5、String要大写,可以正常定义,也可以String a=new String("华为");

二、运算 

        1、byte、short、char进行运算时会提升到int类型。

        2、字符串和数字(或字符类型)相加会进行concat,注意从左到右进行运算。例如用来实现输出“我的年龄是18岁”可以使用System.out.println("我的年龄是"+age+"岁");

        3、字符(char类型)加数字等于字符转ascii码加数字的int类型。

        4、有自增++,有++a和a++,也有+= 

        5、& ,| ,^ ,!,不能用and or,&&和||有短路效果,如果第一个可以判断不需要看第二个。

三、判断和循环语句 

        和C++一模一样,单行语句case可以将冒号换成->。即case 1->System.out.println(1);

        字符串相比较时使用equal函数。if (sure.equals("y")){}

四、数组

        int []array=new int[]{1,2,3};或者int array[] =new int[]{1,2,3}或者int []array={1,2,3};

        打印数组值也是array[0]这种,输出array是地址值

        栈(方法区使用)和堆(数组new)

        打印数组长度时使用array.length

五、方法

        public static 返回类型 方法名(输入类型 形参 .....)

        可以进行重载:在同一个类下方法名相同,形参不同(包括形参个数和形参类型),不考虑返回值。

        数组形参为int array[]。

六、类

        和类基本上一样,存在private和public对于变量、函数、类的限制。

当前类同一package子孙类其他package
public
protected×

默认(空着不写)

××
private×××

        this还是指向类内变量,而不是函数中的形参。比如类中某一个函数中调用this.age,将返回类中的变量age。

        默认构造函数和带参构造函数与c++一致,Student s1=new Student(){}或Student s1=new Student(){age,sex}。

        类内变量一般是private的,函数可以按自己需求public或者其他。

七、字符串

1、String

        String s1="abc";或者String s2=new String("abc");

        s1.equals("s2"):(比较,考虑大小写)

        s2.equalsIgnoreCase("s1"):(比较,不考虑大小写)

        s1.charAt(0) :返回s1的第0个索引,可用于循环打印字符

        s1.substring(start,end),左闭右开输入子集,类方法

        s1.replace(old,new)  替换字符串中的旧值和新值

2、StringBuilding

        StringBuilder sb=new StringBuilder("张三");        建立可变字符串

        sb.append("是坏人");        添加字符串

        sb.reverse()  ;      翻转字符串

        sb.length()  ;          输出长度

        sb.capacity();        输出sb的容量,字节数

        sb.tostring();          返回String类的字符串,而不是原先的StringBuilder类

        正向从String变StringBuilder类就使用第一行就可以,替换为变量

3、StringJoiner

        StringJoiner sj=new StringJoiner(delimiter,prefix,suffix)

        StringJoiner不能直接初始化变量,只能进行定义,然后在进行循环add时可以自动添加首尾符号和每次执行add后自动添加的间隔符。

        sj.add("abc");        添加字符串,但添加完abc后会自动调用原来定义时的间隔符,最末则会添加尾符。

        sj.length()        返回长度

        sj.tostring()       转换为String类。

4、ArrayList

        ArrayList<String>list1=new ArrayList<>();           空ArrayList类,是一个python列表形式[] 

         下面这个就是模板<>中的类型。

八、static 

        类内static方法和变量,可以直接通过类名调用,不需要实例化,可以作为工具类

        静态代码块static{} 

用于静态代码工具,一般是用于初始化,只能执行一次

九、继承

        多层继承,会从基类中非private,非final,非static的方法建立虚方法表给子类,最后给到最高层子类,最高层子类会先查询虚方法表中寻找建立在父类的方法,而不会通过多层继承找到父类的方法。 

         继承遵循就近原则。

        super问题:

         super可以在类中调用上一层的变量或者方法,this是调用本层的变量和方法。当重写父类方法时,需要在上一行添加@override,负责检验。

       

十、多态 

        看下图,对于调用成员变量和调用成员方法的区别,在多态情况下变量看父类,方法看子类。

         这种父类变量new子类对象的方法,不能调用子类特有方法(可以调用子类重载父类的方法)。可以通过下面的强制转换方式来实现调用子类特有方法。

        假设动物类中有猫和狗两个类,猫和狗都有特殊的方法,猫捉耗子,狗看家。

Animal a=new dog();  //前面明确a用dog类型或者cat类型都可以if (a instanceof Dog d)        //通过这一串判断无论a是dog或是cat都可以使用特有方法d.lookhome()
else if(a instance of Cat c)c.catchmouse()
elseSystem.out.println("没有该类型不能转换")

十一、包

 十二、final

        类似与const

        final修饰也不是都不能改变,对于类外对象和数组是相同的,如下。 

十三、抽象类

十四、接口

        注意接口中写抽象类这个点,也就是说类没有大括号和大括号中的内容

        以上为jdk7的用法。

        jdk8添加了接口中的方法体default和static,默认的为default修饰,后面的继承子类不需要去重载,若重载则接口中的default修饰的方法需要变为抽象方法。另外可以用static定义静态方法。

        jdk9添加了接口中的私有方法,可以用接口中的默认方法或静态方法来调用该私有方法。私有方法分为私有方法private(默认方法default调用)和私有静态方法private static(静态方法static调用)

十五、嵌套类

        一般内部类

        内部类可以使用外部类的包括私有属性,而外部类要访问内部类需要创建对象,不能访问内部类私有属性。

        定义方法:Outer.Inner oi=new Outer().new Inner();

        内部类调用外部的变量不能用super,super使用于父类,调用方法:Outer.this.name;

        内部类调用自己的属性使用this.name;

        调用内部类方法时必须创建对象

        静态内部类

        静态内部类定义变量时,Outer.Inner oi=new Outer.Inner();

        调用静态内部类时不用创建对象,可以用类名来进行指定

        匿名内部类 

       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/163711.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单链表算法经典OJ题

目录 1、移除链表元素 2、翻转链表 3、合并两个有序链表 4、获取链表的中间结点 5、环形链表解决约瑟夫问题 6、分割链表 1、移除链表元素 203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; typedef struct ListNode LSNode; struct ListNode* remove…

C#冒泡排序算法

冒泡排序实现原理 冒泡排序是一种简单的排序算法&#xff0c;其原理如下&#xff1a; 从待排序的数组的第一个元素开始&#xff0c;依次比较相邻的两个元素。 如果前面的元素大于后面的元素&#xff08;升序排序&#xff09;&#xff0c;则交换这两个元素的位置&#xff0c;使…

2023前端面试题总结

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 Html5和CSS3 常见的水平垂直居中实现方案 最简单的方案当然是flex布局 .father {display: flex;justify-content…

Unity Animation--动画剪辑(动画游戏对象)

保存新的动画剪辑后&#xff0c;就可以开始添加关键帧了。 可以使用两种不同的方法为GameObject设置动画。 Unity“动画”窗口&#xff1a;“记录模式”和“预览模式”。 记录模式下的动画窗口 在记录模式下&#xff0c;当您移动&#xff0c;旋转或以其他方式修改动画GameOb…

nginx tomcat 动静分离

动静分离&#xff1a; 访问静态和动态页面分开 实现动态和静态页面负载均衡。 五台虚拟机 实验1&#xff0c;动静分离 思路&#xff1a; 需要设备&#xff1a;三台虚拟机 一台nginx 代理又是静态 两台tomcat 请求动态页面 在全局模块中配置upstream tomcat 新建location…

全面的Docker快速入门教程

前言&#xff1a; 都2023年了&#xff0c;你还在为了安装一个开发或者部署环境、软件而花费半天的时间吗&#xff1f;你还在解决开发环境能够正常访问&#xff0c;而发布正式环境无法正常访问的问题吗&#xff1f;你还在为持续集成和持续交付&#xff08;CI / CD&#xff09;工…

Linux安装MINIO

MINIO简介MINIO目录 mkdir -p /opt/minio/data && cd /opt/minio MINIO下载 wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio MINIO授权 chmod x minio MINIO端口 firewall-cmd --zonepublic --add-port7171/tcp --permanent && firewal…

ios safari 正则兼容问题

背景: 系统是自己开发的采购管理系统; 最近升级系统之后客户反馈部分苹果手机现在在进入单据界面的时候报错, 内容显示不全; 安卓手机正常; 苹果首页是之前有使用过系统的才不行, 如果是之前没有使用过系统, 现在也是可以; 也尝试清理过缓存,更换浏览器都也是不行; 也更…

分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测

分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测…

想找就能找!如何找回iPhone中被隐藏或主屏幕上被删除的应用程序

本文介绍了如何取消隐藏你在iPhone上隐藏的应用程序&#xff0c;以及如何检索你从iPhone中删除的应用程序。 如何取消隐藏隐藏的应用程序 你过去可能在iPhone上隐藏了应用程序&#xff0c;因为你不经常使用它们&#xff0c;或者你只是喜欢几个整洁的主屏幕。如果你决定将隐藏…

uni-app checkout(多选)radio(单选)选中之后样式不会出现钩子

前言 最近在实际开发过程中发现项目的多选和单选选中之后都是只有颜色&#xff0c;没有钩子&#xff0c;或者是另外图案 刚开始并不重视&#xff0c;猜测可能是微信基础库的bug&#xff0c;可能换个基础库就行了&#xff0c;或者是编辑器显示问题 最后在查阅之后才发现&#…

ORACLE 特殊日期时间转换,计算

一&#xff1a;特殊日期处理 如该字段存储日期形式为&#xff1a;2023/4/23 9:00&#xff0c;2023-3-1 12:23。将这样的数据转换成正确的格式&#xff08;yyyy-mm-dd HH24:mi:ss&#xff09;&#xff0c;即为&#xff1a;2023-04-23 09:00:00。这里举例的字段为&#xff1a;JS…

Simple RPC - 02 通用高性能序列化和反序列化设计与实现

文章目录 概述设计实现通用的序列化接口通用的序列化实现【推荐】 vs 专用的序列化实现专用序列化接口定义序列化实现 概述 网络传输和序列化这两部分的功能相对来说是非常通用并且独立的&#xff0c;在设计的时候&#xff0c;只要能做到比较好的抽象&#xff0c;这两部的实现…

Spring5学习笔记之整合MyBatis

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Spring专栏 ✨特色专栏&#xff1a; M…

nvm 安装 node 安装不上 npm

遇到一个问题 nvm install 18.18.2 node -v 安装上了 npm -v 发现没有安装上 解决办法 nvm -v 查看到自己的 nvm 版本号是 1.1.7 NVM下载 - NVM中文网 下载最新版本的 nvm .exe 文件 nvm list 查看手里 node 的所有版本 nvm uninstall 各个版本只保留一个最低版本 点…

百分点科技受邀参加“一带一路”国际合作高峰论坛

10月17-18日&#xff0c;第三届“一带一路”国际合作高峰论坛在北京成功举行。作为新一代信息技术出海企业代表&#xff0c;百分点科技董事长兼CEO苏萌受邀出席高峰论坛开场活动——“一带一路”企业家大会&#xff0c;与来自82个国家和地区的企业或机构、有关国际组织、经济机…

从功能测试到自动化测试,待遇翻倍,我整理的超全学习指南!

在这个吃技术的IT行业来说&#xff0c;我刚入行的时候每天做的也是最基础的工作&#xff0c;但是随着时间的消磨&#xff0c;我产生了对自我和岗位价值和意义的困惑。 一是感觉自己在浪费时间&#xff0c;另一个就是做了快2年的测试&#xff0c;感觉每天过得浑浑噩噩&#xff…

《数据结构、算法与应用C++语言描述》使用C++语言实现数组队列

《数据结构、算法与应用C语言描述》使用C语言实现数组队列 定义 队列的定义 队列&#xff08;queue&#xff09;是一个线性表&#xff0c;其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾&#xff08;back或rear&#xff09;&#xff0c;删除元素的那一端称…

并发编程——2.基础概念及其它相关的概述

这篇文章我们来讲一下并发编程中的线程及其相关的概述内容。 目录 1.J.U.C 2.进程、线程、协程 2.1进程 2.2线程 2.3纤程&#xff08;协程&#xff09; 2.4概念小结 3.并发、并行、串行 3.1并发 3.2并行 3.3串行 3.4概念小结 4.CPU核心数和线程数的关系 5.上下文…

直线模组有哪些配件组成的?

直线模组又称线性模组或线性滑台&#xff0c;是自动化设备中重要的传动元件&#xff0c;主要由以下几部分组成&#xff1a; 1、直线导轨&#xff1a;直线导轨又称线性滑轨&#xff0c;是用于直线往复运动场合的重要零部件&#xff0c;它具有比直线轴承更高的额定负载&#xff0…