java基础记录·杂(while、split、位运算符)

Java编程入门:从基础语法到面向对象开发 Java作为一门面向对象的编程语言,凭借其'一次编写,到处运行'的特性,在企业级开发和大数据领域占据主导地位。Java的强类型系统和丰富的类库设计,使其成为构建复杂应用程序的理想选择。从基础语法到面向对象编程,Java的学习路径清晰,适合培养扎实的编程思维。JDK环境搭建是Java开发的第一步,而IntelliJ IDEA等现代IDE则能显著提升开发效率。掌握Java核心概念如封装、继承、多态,以及集合框架、异常处理等关键技术,是成为Java开发者的必经之路。随着Java 8引入的Lambda表达式和Str 阅读详情

一、

split截取是将所有子串放入数组里,若大量操作效率较低,可以用StringTokenizer替换。

测试如下:

package gcc.mix.test;
import java.util.StringTokenizer;
/**
 * Created by gcc on 2018/5/4.
 * 单纯截取字符串用substring,少量长字符串截取取值可以用split,大量的话用StringTokenizer
 */
public class SplitTest {

    public static final String getTerminalFromYardLocation(String yardLocation) {
        String result = null;
        if (yardLocation != null) {
            int start = yardLocation.indexOf(",") + 1;
            int end = yardLocation.indexOf(",", start);
            if (end > start) {
                result = yardLocation.substring(start, end);
            }
        }
        return result;
    }

    public static final String getTest(String test) {
        String s = null;
        if (test != null) {
            String[] gt = test.split(",");
            if (gt.length > 1) {
                s = gt[1];
            }
        }
        return s;
    }

    public static final String StringTokenizerTest(String test) {
        String s = null;
        if (test != null) {
            StringTokenizer st = new StringTokenizer(test, ",");
            //st.countTokens();
            st.nextToken();
            st.nextToken();
            s = st.nextToken();
        }
        return s;
    }

    public static void main(String[] args) {
        String s = "Y,T,1,B14,1,2,1,2";

        System.out.println("1:"+getTerminalFromYardLocation(s));
        System.out.println("2:"+getTest(s));
        System.out.println("3:"+StringTokenizerTest(s));

        int max = 100000;
        long start = System.currentTimeMillis();
        for (int i = 0; i < max; i++) {
            getTerminalFromYardLocation(s);
        }
        System.out.println("getTerminalFromYardLocation escape time: " + (System.currentTimeMillis() - start) + " ms");

        start = System.currentTimeMillis();
        for (int i = 0; i < max; i++) {
            getTest(s);
        }
        System.out.println("getTest escape time: " + (System.currentTimeMillis() - start) + " ms");

        start = System.currentTimeMillis();
        for (int i = 0; i < max; i++) {
            StringTokenizerTest(s);
        }
        System.out.println("getTest1 escape time: " + (System.currentTimeMillis() - start) + " ms");
    }

}

结果如下:


二、

这里记录下while (n-- != 0) { }

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

三、

<<:

左移就是把一个数的全部位数都向左移动若干位,例如以下:

12 的二进制为 1100

则 12 << 1 的二进制为 11000, 则完整的运算式为 12 << 1 = 24;

>>:

右移就是把一个数的全部位数都向右移动若干位,例如以下:

12 的二进制为 1100

则 12 >> 1 的二进制为 0110。 则完整的运算式为 12 >> 1 = 6;

~:

'取反'运算符~的作用是将各位数字取反:全部的0置为1,1置为0,例如以下:

12 的二进制为 1100

进行取反操作为 10000000 00000000 00000000 00001101

则完整的运算式为

~12 = -13

&:
作用是对运算符两側以二进制表达的操作符按位分别进行'与'运算。操作的规则是:仅当两个操作数都为1时。输出结果才为1。否则为0,例如:
       12 的二进制为 1100
        5  的二进制为 0101

则 12 & 5 的二进制为 0100,则完整的运算式为 12 & 5 = 4; 

可以用于判断一个数的奇偶(比其他方法效率高)。如5&1,只判断末尾,1则奇数,0则偶数

蓝桥杯国赛Java B组:算法竞赛核心能力与工程实践深度解析 算法竞赛是检验程序员核心能力的重要场景,其本质在于运用数据结构与算法高效解决复杂问题。从原理层面看,它考察对基础数据结构(如数组、链表、树、图)的深刻理解,以及对搜索、动态规划、贪心等经典算法范式的灵活运用。其技术价值在于,它能系统性训练逻辑抽象、问题建模和边界处理能力,这些正是解决高并发、大数据量等工程难题的思维基础。在应用场景上,竞赛中锤炼的优化意识、调试策略和模块化思维,可直接迁移至后端开发、性能调优和系统设计等实践领域。本文以蓝桥杯国赛Java B组为具体载体,深入剖析如何将竞赛中涉及的动态规划、状 阅读详情

相关推荐

等保三级-MySQL 安全加固实战指南

本文详细介绍了MySQL数据库在等保三级要求下的安全加固实战指南,涵盖身份鉴别、访问控制、安全审计、网络传输安全、入侵防范和数据完整性等关键领域。通过具体配置示例和实战经验,帮助用户有效提升MySQL数据库的安全防护能力,满足等保三级合规要求。

weixin_29197835的博客 183

Java split方法详细讲解

分隔符可以是任意字符、符号、数字、字符串等。

qq_26893841的博客 4万+

使用Android GPS api 实现一个轨迹记录的小功能

引入 市场上的跑步软件已经是非常多了,如咕咚和悦跑圈还有其他,很多大厂也在涉足这个方面。而最简单的运动跑步,最近几年也因简单,不限场地,运动效果出众备受大众喜欢。 我的这篇文章的内容很多也是从网上学习其他的博客内容,外加利用android自身的提供的api实现的,希望能对有这方面需求的朋友有所帮助。 介绍 先上两张图,界面比较丑,不过一些数据基本都有了,这个图片是临时要用截取的,所以轨迹线很短,之前

尝试着去了解代码 1万+

Java切割字符串函数split()源码分析

今天在做leetcode上的题目时,用到了字符串中的split函数,但切出来的数组含有空字符串 "",迫于知道什么原因,跑去看了一下源码,结果一早上就过去了,记录一下。附上题目链接:最常见的单词 测试字符串:"a,,a,,b,c,,c" 当对该字符串使用split(",")时,结果如下:(其中的空字符用了true代替) 那为什么会出现这种情况呢?接下来让我们去源码里面看看。 split(String rege...

朱哥的博客 1451

刷题单向链表

实现一个数据结构,维护一张表(最初只有一个元素 11)。接下来 qq 行,每行表示一次操作,操作具体间题目描述。a[i] 里面放的是下一个元素,为0代表链表结束。如单链表1->4 -> 2->3->0用数组表示是。对于每个操作 2,输出一个数字,用换行隔开。第一行一个整数 qq 表示操作次数。

power的专栏 1714

告别手动输入!用Burp插件+ddddocr,5分钟搞定图片验证码自动识别

本文详细介绍了如何利用Burp插件和ddddocr开源库快速构建图片验证码自动识别系统,实现高效、零成本的验证码自动化解决方案。通过环境搭建、性能调优和Burp Suite深度集成,显著提升安全测试效率,特别适用于金融和电商系统的批量测试场景。

weixin_29099217的博客 202

使用spring 的注解 @value使用方法

有三种,都没测试 1 中################# 在spring 3.0中,可以通过使用@value,对一些如xxx.properties文件  中的文件,进行键值对的注入,例子如下:  1 首先在applicationContext.xml中加入:         xsi:schemaLocation="http://www.springframework.org/s

有 prepare , No out 3750

什么是以太网链路聚合

以太网链路聚合技术通过将多个物理端口捆绑成逻辑端口,可显著提升网络性能。该技术能增加总带宽(各链路带宽之和)、提高可靠性(故障秒级切换)并实现智能负载分担。主要分为手工模式和基于LACP协议的动态模式,后者能检测链路故障更可靠。配置时需确保接口参数一致、模式匹配,适用于核心交换、服务器接入等场景。华为设备通过创建Eth-Trunk接口、指定LACP模式并添加成员接口即可完成部署。这项成熟技术能以低成本解决带宽瓶颈和可靠性问题,是构建高速稳定网络的关键方案。

lai_2020的博客 674

java中split()特殊符号"." "|" "*" "\" "]"

关于点的问题是用string.split("[.]") 解决。 关于竖线的问题用 string.split("\\|")解决。 关于星号的问题用 string.split("\\*")解决。 关于斜线的问题用 sring.split("\\\\")解决。 关于中括号的问题用 sring.split("\\[\\]")解决。 转载于:https://www.cnblogs.com/wanyong-w...

weixin_34221112的博客 571

【WRFDA第一期】WRF数据同化概述及资源整理

【WRFDA第一期】WRF数据同化概述及资源整理

WW、forever的博客 1658

【变化检测】变化检测相关数据集+代码+论文合集

光学影像变化检测领域数据集(有label的,无label的)、高光谱影像变化检测领域数据集、3D变化检测领域数据集、传统变化检测算法、深度学习变化检测算法、SAR变化检测算法、高光谱变化检测算法论文及代码等资源。

向上生长的程序媛的博客 2089

MySQL实现Split用法

分享知识 传递快乐 MySQL没有Split 函数,需要自己定义,以下是几个自定义的split函数,MySQL里的Split用法: CREATE PROCEDURE sp_split(in words varchar(2000),in regex varchar(20)) BEGIN CREATE TEMPORARY TABLE IF NOT EXISTS temp_key_spli...

旷野历程 3万+

Python爬虫实战:使用Scrapy+Playwright高效爬取全球石油价格历史数据

python复制下载# 产品信息# 日期信息# 价格数据price = scrapy.Field() # 收盘价open = scrapy.Field() # 开盘价high = scrapy.Field() # 最高价low = scrapy.Field() # 最低价volume = scrapy.Field() # 交易量change_percent = scrapy.Field() # 涨跌幅# 元数据。

2201_76125261的博客 1020

【Java入门到精通】*基础篇

Java入门教程摘要(1-6期) 本系列从零讲解Java,基于Java 8 LTS版本。 Java历史与特性:1995年Sun公司发布,以跨平台、面向对象为核心优势,应用于后端、安卓、大数据等领域。 跨平台原理:通过JVM将字节码转换为机器码,实现"一次编写,到处运行"。 环境组件:JDK(开发工具包)⊃ JRE(运行环境)⊃ JVM(虚拟机),开发需安装JDK。 安装配置:提供Windows/Mac的JDK安装指南,强调路径无中文/空格。 环境变量:设置JAVA_HOME指向JDK路径,Path添加bin

2301_81248642的博客 931

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java 基础

Java 基础 1、面向对象编程有哪些特征? 2、JDK 与 JRE 的区别是什么? 3、Java 有哪几种基本数据类型? 4、== 和 equals 比较有什么区别? 5、public,private,protected,默认的区别? 6、this 和 super 有什么区别? 7、short s1 = 1; s1 += 1;有错吗? 8、short s1 = 1; s1 = s1 + 1;有错吗? 9、float n = 1.8 有错吗? 10、i++ 和 ++i 的区别? 11、while 和 do

weixin_43964191的博客 404

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java基础知识

java基础知识

xgq_111的博客 2231

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JavaGuide核心内容体系:从基础到进阶的完整学习路径

本文系统梳理了Java从基础到高级的完整知识体系,涵盖Java基础语法、集合框架、并发编程、JVM原理及版本新特性。首先详细解析了Java语言特性、数据类型、面向对象编程和异常处理机制;接着深入探讨了集合框架结构、HashMap实现原理、并发编程核心机制和线程池工作原理;然后分析了JVM内存模型、垃圾回收算法及性能优化策略;最后概述了Java从JDK 8到21的重要版本演进和技术发展趋势,为开发者

gitblog_00384的博客 936

【后端】Java学习笔记

java笔记二周目

lcukyNwa的博客 1568

狂命爆肝99天,共52K字的JAVA学习笔记奉上,JAVA从入门到精通一文搞定,一文在手JAVA无忧

本文介绍了Java编程的基础知识、开发环境设置、JVM内存划分以及常用关键字。Java分为JavaSE、JavaEE和JavaME三个版本,分别用于桌面、企业和嵌入式系统开发。编译使用javac,运行使用java,JDK是开发工具包,JRE是运行环境,JVM是虚拟机。JVM内存分为堆、方法区和栈,分别存储实例变量、静态变量和局部变量。常用关键字包括public、static、final、this和super,分别用于定义类、静态成员、常量、当前对象引用和父类特征。开发环境IDEA的快捷键和组织方式也进行了总

渣渣盟的博客 4万+

Java基础学习路线与核心知识点详解:从语法到面试必备

在编程技术栈中,Java以跨平台、面向对象和生态成熟著称,是后端开发与大型系统构建的基石。掌握Java基础不仅是语法层面的熟练,更要理解集合框架、并发编程等底层机制,例如HashMap的哈希冲突处理与扩容原理,以及线程安全与锁的升级过程。从数据类型、面向对象设计到异常处理、IO与反射,每个环节都影响着代码质量与系统性能。在工程实践中,扎实的基础能帮助开发者快速定位并发异常、避免集合操作陷阱,并为学习Spring等框架铺平道路。无论是零基础入门还是准备技术面试,系统梳理Java核心知识体系都至关重要。本文以多

weixin_34380948的博客 435

一文学完Python基础

个人笔记

qq_59247073的博客 214

Python基础教程

Python快速入门课程,小白学完课程,您将学会自己写代码。

lsgzn的博客 304

爆肝一个月,Python 从入门到精通

本文介绍了Python的安装与基础编程知识。Python是跨平台语言,可在Windows、Mac和Linux系统上运行。安装时应选择最新的Python 3.x版本,并确保勾选“Add Python to PATH”。文章详细说明了在不同操作系统下安装Python的方法,包括使用官方安装包或包管理器(如Scoop、Homebrew)。随后,介绍了Python解释器的基本功能,包括命令行交互环境和集成开发环境。文中还讲解了如何编写第一个程序,强调通过手动输入代码来培养编程感觉,并介绍了变量、数据类型、字符串编码

lw_zhang1101的博客 2045

Vim9 Script 完全指南:用现代强类型脚本语言编写 Vim 插件与配置

Vim9 script 是 Vim 内置脚本语言(legacy Vim script,又称 VimL)的现代化继任者,提供强类型、类、泛型函数与编译为字节码的执行模型。本文以当前仓库中的 [vim9script.md](https://link.gitcode.com/i/99fadb77cb77327119b46b5416d9a642) 教程为主体,逐节讲解其类型系统、变量、控制流、函数、类、模

gitblog_00898的博客 284

mybatis 字符串按逗号分割为数组,进行SQL拼接

// 省略... <if test='ids != null and ids !="" '> and t.id in <foreach item="id" collection='ids.split(",")' open="(" separator="," close=")"> #{id} </foreach> </if> <!-- 比如 String ids=“1,2,3,4,5” ,拼接结果是 and t.id in (

猎人在吃肉 7140

mybatis传入字符串分割成数组并遍历

在我们的业务场景中,前段经常传过来一些用逗号“,”隔开的字符串,我们怎么在mybatis中将字符串分割后再用in查询呢? 废话少说,上代码 <!--查询名字为某某某的用户信息--> <select id="getUser" parameterType="java.lang.String" resultType="java.util.Map"> select id,name,age from user where 1==1

weixin_37738830的博客 2722
上一篇: java基础记录·杂(instanceof与getClass)
下一篇: java8类库简单了解(四)String
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值